본문 바로가기
programming language/MATLAB

MATLAB Zero padding 에 따른 FFT 결과

by 남성 2010. 1. 3.

FFT 가 되는 신호에 대한 zero padding 효과가 어떻게 되는지를 알아보자

다음과 같은 sin() 그래프가 있고 이에 대한 FFT 를 수행해보자

pha = linspace(0,2*pi,32)';

x=sin(pha);

y=fft(x);

figure(1), plot(pha,x,'b:.'), grid on

아래 코드와 같이 x 값의 뒤에 0 을 넣어 보자. 이를 zero padding 이라 한다.

x 값의 크기 만큼, 이 예에서는 32 만큼의 0을 뒤에 넣어 보자. 그리고 이에 대해 fft 를 해보자


 xZero = [x ; zeros(32,1)];

yy=fft(xZero);


 x 대한 fft 결과인 y 값과 zero padding 신호에 대한 fft 결과인 yy 같이 그리기 위하여 다음과 같이 x 축을 설정하고 FFT 결과에 대한 절대값 그래프를 확인해 보자.


 x_axis=0:length(x)-1;

x2_axis= length(x)/length(xZero)*(0:length(xZero)-1);

 figure(2), plot(x_axis,abs(y),'r:*' , x2_axis, abs(yy),'b-->'), grid on, title('| FFT reselt |'),legend('Original','Zero padded')


 

 

다음과 같이 Original 신호의 FFT 결과의 중간 중간에 점이 하나씩 생긴 것을 확인 있을 것이다.

, fft 이전 신호의 부분에 zero padding 하게 되면 FFT 이후에 그만큼 oversample 된다는 것을 있다.

나아가서 예에서 Original 신호의 중간에 두개씩이 생기게 하고 싶다면 개의 zero 넣어줘야 할까에 대해서도 생각해 있다.

x 뒷부분에 64개의 0 추가 준다면 점이 두개씩 생겨나게 된다.


태그

,

댓글0