FFT 되는 신호의 중간에 upsampling을 하고 그 결과가 어떻게 되는지를 확인해 보자

다음과 같은 sin() 그래프가 있고 이에 대한 FFT 를 수행해보자
pha = linspace(0,2*pi,32)';
x=sin(pha);
y=fft(x);
figure(1), plot(pha,x,'b:.'), grid on

다음과 같이 x 의 값에 3 sample 씩 upsample 을 하고 그에 대해 FFT 를 해보자. 
xZero = upsample(x,3);
yy=fft(xZero); 
x 대한 fft 결과인 y 값과 upsample 신호에 대한 fft 결과인 yy 같이 그리기 위하여 다음과 같이 x 축을 설정하고 FFT 결과에 대한 절대값 그래프 위상값을 확인해 보자
x_axis=0:length(x)-1;
x2_axis= length(x)/length(xZero)*(0:length(xZero)-1); 
h2= figure('units', 'normalized', 'pos',[0.5 0.5 0.4 0.4]);, plot(x_axis,abs(y),'r:*' , x2_axis, abs(yy),'b-->'), grid on, title('| FFT reselt |'),legend('Original','Zero padded')

h3= figure(
'units', 'normalized', 'pos',[0.5 0 0.4 0.4]);, plot(x_axis,unwrap(angle(y)),'r:*' , x2_axis, unwrap(angle(yy)),'b-->'), grid on, title('angle(FFT reselt )'),legend('Original','Zero padded')

 
위의 결과에서 확인할 있는 것과 같이 upsample 만큼 반복 특성이 발생한다는 것을 확인 있다.

  1. 공대생 2015.05.03 23:19

    감사히 잘 봤습니다!
    실례지만 혹시 upsample 함수가 matlab에 존재하는 함수인가요?
    upsample함수 혹시 만드신거면 소스 좀 여쭤봐도 될까요?

    • 남성 2015.05.03 23:38 신고

      upsample 함수는 아래 주소에서 확인 할 수 있듯이 signal processing toolbox 에 있는 함수 입니다.

      http://kr.mathworks.com/help/signal/ref/upsample.html;jsessionid=a315b53bd2a1bf11daf0b2f6bc42

      혹시 Signal Processing Toolbox 가 없어서 만들어 사용하신다면 그냥 간단하게 만들 수도 있겠지만 다른 코드를 참조 하고 싶다면 아래 주소의 octave upsample 을 참조 하시는게 좋을것 같네요.

      http://octave-signal.sourcearchive.com/documentation/1.0.9/upsample_8m-source.html

    • 공대생 2015.05.03 23:47

      이렇게 늦은 시간에 답을 친히 해주시고,
      단순한 질문에 이렇게 상세하게 답변해주셔서 감사합니다.
      좋은 밤 되시길 바라겠습니다^^

    • 남성 2015.05.04 00:31 신고

      네~ 공대생 님도 좋은 밤 되세요~ 방문해 주셔서 감사합니다. ^^

+ Recent posts