본문 바로가기
programming language/MATLAB

MATLAB sinc function

by __observer__ 2014. 4. 8.
반응형

전자과에서 수학을 접하다 보면 sinc 함수를 접하게 됩니다. 특히 신호처리 과목을 듣는 사람들이라면 거의 백퍼 접하게 되는게 sinc 함수 입니다.

 

Sinc 함수는 아래 주소에 설명이 잘 나와있습니다.

 

http://ko.wikipedia.org/wiki/%EC%8B%B1%ED%81%AC%ED%95%A8%EC%88%98

 

sinc 함수를 푸리에 변환하면 직사각형 함수(Rectangular Function)가 되게 되고~ 처음 이 사실을 알고 참~ 신기하다는 생각을 한적이 있습니다.

 

오늘은 위에 설명한 사실을 MATLAB 을 사용하여 확인 해 보려 합니다.

 


MATLAB 에서 sinc 함수는 Signal Processing Toolbox에 들어있습니다. Signal Processing Toolbox가 없는 분들은 간단한 함수이니 위 수식대로 만들어서 사용해도 될 겁니다.

 

다만 x=0 인 경우 분모도 0 이 되므로 이 부분만 주의해서 사용하시면 됩니다.

 

따라서 다음과 같이 작성 할 수 있습니다. 함수명은 기존 sinc 함수와의 충돌을 방지하기 위해 sinc_ 로 했습니다.


function y=sinc_(x)

i=find(x==0);

x(i)= nan;

y = sin(pi*x)./(pi*x);

y(i) = 1;

 

간단하게 x=0 인 경우만 아래 포스팅에서 배웠던 NaN(Not-a-Number)을 넣어줬다가 그 값만 1 로 바꿔주는 거죠. Nan 이 아니라 아무 값이나 넣고 싶은 값을 넣어도 결과는 같고~ 그냥 x(i)= nan; 을 없애도 상관 없습니다. 


2011/04/20 - [programming language/MATLAB] - MATLAB NaN

 

그럼 sinc 함수를 그려보죠~ 


x=-6:0.1:6;

y=sinc_(x);

 

figure,

plot(x,y), grid on

 

 

 

다음으로 위에서 얘기했던 sinc() 함수의 푸리에 변환이 구형함수가 되는지 확인해 보죠~ 구형 함수를 나타내기 위해 좀 긴~~ sinc 함수의 x 축을 좀 길게 잡습니다.  


x=-80000*pi:0.1:8000*pi;

y=sinc_(x);

ffty=fft(y);

 

fftShifted=fftshift(ffty);

plot(abs(fftShifted)), grid on

 

다음과 같이 sinc 함수의 푸리에 트랜스폼 결과가 직사각파가 되는 것을 확인 할 수 있습니다. Sinc 함수 … 참~~ 신기하죠?? 나만 신기한가…



반응형

댓글