본문 바로가기
programming language/MATLAB

MATLAB sinc function

by 남성 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 함수 … 참~~ 신기하죠?? 나만 신기한가…



댓글0