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을 추가 해 준다면 점이 두개씩 더 생겨나게 된다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB filter, filtic 함수를 이용한 이산 시스템 응답 (609) | 2010.01.13 |
---|---|
MATLAB Upsample 과 FFT (4) | 2010.01.10 |
MATLAB 음성 파일 읽기, 재생 (0) | 2010.01.08 |
변수의 크기를 알아보자 (0) | 2010.01.08 |
MATLAB PDF (Probability Density Function) (5) | 2010.01.03 |
MATLAB - vectorize() (0) | 2010.01.01 |
MATLAB notebook (0) | 2010.01.01 |
MATLAB Iteration (1) | 2009.12.31 |
댓글