나는이 영역의 전형적인 예인 fft를 사용하여 sunspots.dat 데이터 (아래)를 분석했습니다. 나는 실제 및 imaginery 부품에서 fft의 결과를 얻었다. 그런 다음이 계수를 사용하여 푸리에 변환 공식을 따라 데이터를 다시 만들려고했습니다. 실제 부품 b_n을 a_n과 imaginery에 해당 생각, 내가 그러나 어떤 이유로ifft를 사용하지 않고 FFT 결과를 사용하여 시계열 데이터 다시 만들기
import numpy as np
from scipy import *
from matplotlib import pyplot as gplt
from scipy import fftpack
def f(Y,x):
total = 0
for i in range(20):
total += Y.real[i]*np.cos(i*x) + Y.imag[i]*np.sin(i*x)
return total
tempdata = np.loadtxt("sunspots.dat")
year=tempdata[:,0]
wolfer=tempdata[:,1]
Y=fft(wolfer)
n=len(Y)
print n
xs = linspace(0, 2*pi,1000)
gplt.plot(xs, [f(Y, x) for x in xs], '.')
gplt.show()
이, IFFT (나는 양쪽에 계수의 같은 번호를 사용)에 의해 생성 된 하나를 반영하지 않습니다 내 줄거리. 무엇이 잘못 될 수 있습니까?
은 데이터 : 당신이 fft(wolfer)
전화했을 때
http://linuxgazette.net/115/misc/andreasen/sunspots.dat
호기심에서 벗어나서 스펙트럼으로 무엇을하고 있습니까? 다양한 구성 요소의 상대적인 스펙트럼 진폭을 결정하려는 경우 데이터 창 (en.wikipedia.org/wiki/Window_function)을 사용할 수 있습니다. 예를 들어,'np.abs (fft (wolfer * hanning (len (wolfer))))')'n = 30 주위의 피크는 윈도우가없는 것보다 조금 더 많은 구조를 보여줍니다. – mtrw