FFT관련해서 질문이 있습니다.

게시판 IDL Q&A FFT관련해서 질문이 있습니다.

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #1414 Reply
      willms
      회원

      안녕하세요.

      fft를 IDL로 처음 시도하고 있는데요, 관련해서 질문이 있습니다.

      old IDL user group에서 글을 읽다가

      홍성재님이 작성하신 글(2009-02-03 23:03:12, Hit : 456, Vote : 0)과 답변을 참고로 제가 fft를 다시 해보았는데요, 질문이 있습니다.

      ===========================================================================================

      X = FINDGEN(96)*!dtor
      T1 = 24*SIN(X*24)+12 ; 24시간 주기, 24의 진폭을 가진 sine 함수
      T2 = 12*SIN(X*48)+12 ; 12시간 주기, 12의 진폭을 가진 sine 함수
      T3 = 6*SIN(X*96)+12 ; 6시간 주기, 6의 진폭을 가진 sine 함수
      T = T1+T2+T3 ; T라는 T1, T2, T3의 합으로 이루어진 새 함수를 만들었습니다.

      DN = 96 ; time series의 갯수
      lag = FINDGEN(DN/2)+1
      a_cor = A_CORRELATE(T, lag) ; 1~48 lag의 autocorrelation을 구합니다.

      F = fft(T)
      F=F^2
      power = ABS(F) ; 파워를 구했습니다.

      DEVICE, decomposed=0
      ;WINDOW, 2, xsize=1200, ysize=600

      PLOT, lag, power, $ ; 1~48 time step에 대한 파워스펙트럼을 plot
      YTITLE=’Power Spectrum of T’, BACKGROUND=255, COLOR=0, $
      XTITLE=’Cycles / Hour’, /YLOG

      END

      ====================================================

      이상우 (2009-02-05 19:56:15)

      FFT를 T에 직접 적용하고 파워스펙트럼을 구해야 원하시는 결과가 나옵니다. 보니까 a_correlate를 적용한 결과에 FFT가 적용되어 있던데, 이러면 T자체에 대한 결과는 나오지 않겠죠. 그리고 파워스펙트럼은 FFT결과를 제곱해야 나오는 것으로 압니다.

      ======================================================================================

      여기서 질문입니다.

      결과 그림이 x축(cycle/hour)에서 6,12,24 부분에 피크가 존재해야 하고 24부분에 가장 큰 피크가 존재해야 하는데 그렇지 않은 거 같습니다. 그리고 살짝 오른쪽으로 쉬프트가 된거 같습니다. 그리고 앞 부분에 가장 큰 피크 값은 무엇을 의미하는지 궁금합니다.

      이상우님께서 홍성재님 질문에 대한 답변대로 FFT를 T에 대해서 했고, FFT 결과를 제곱했습니다.

      • 이 게시글은 willms에 의해 10 years, 2 months 전에 수정됐습니다.
    • #1444 Reply
      Sangwoo
      회원

      Power Spectrum에서 X축은 Frequency에 해당됩니다. 올리신 코드에서 lag라는 배열은 아마도 FINDGEN(DN/2+1)과 같이 정의하면 더 좋을 것 같군요. 여하튼 이렇게 그려진 플롯을 보면 피크가 세 개 정도 보이는데, 왼쪽부터 오른쪽 순서대로 6, 12, 24의 주기에 해당된다고 보면 될 것 같습니다. 물론 값이 그래프상에서 정확히 이 숫자들과 일치하게 보이지는 않는데, 이유는 아마도 T1, T2, T3을 합성한 T라는 함수에 대하여 얻은 결과이기 때문에 약간의 차이가 있는 것 아닌가 싶네요.

    • #1427 Reply
      룰루
      회원

      음.. fft를 하면 x축은 주기가 아닌 주파수로 알고 있습니다.

      주파수는 주기의 역수이므로.. 앞부분부터 차례대로 피크점들이 낮아지지 않을까요?

      쉬프트 된건 ‘lag = FINDGEN(DN/2)+1’ 여기서 +1 때문에 되어 있는거 같은데,

      처음 코딩을 하실 때 의미를 두고 하신건지 아닌지는 잘 모르겠네요.

      그리고 젤 앞부분에 큰 피크 값을 가지는 것은 수학적으로는 잘 모르겠지만 모든 좌표점들이 +방향으로

      쏠려서 그렇습니다. 여기서는 예제로 만드셧기 때문에 t1,t2,t3 함수에서 ‘+12’를 제거하시면 fft가

      바로 그려지는걸 확인하실 수 있구요. 혹시 실제 데이터도 +방향으로 쏠려 있다면, 저같은 경우에는

      어차피 fft는 주파수를 확인하기 위해 사용하는 것이니 데이터를 약간 아래로 쉬프트 해서 사용하고 있습니다.

      • 이 답변은 룰루에 의해 10 years, 2 months 전에 수정됐습니다.
1 답변 글타래를 보이고 있습니다
'FFT관련해서 질문이 있습니다.'에 답변달기
글쓴이 정보: