私は信号処理、特にFFTが初めてなので、ここで正しいことをしているかどうかはわかりませんが、結果に少し混乱しています。
離散的な実関数(測定データ)があり、その上にローパスフィルターを設定したい。選択するツールは、numpyパッケージを備えたPythonです。私はこの手順に従います:
- 私の関数のfftを計算する
- 高周波を遮断
- 逆fftを実行します
私が使用しているコードは次のとおりです。
import numpy as np
sampling_length = 15.0*60.0 # measured every 15 minutes
Fs = 1.0/sampling_length
ls = range(len(data)) # data contains the function
freq = np.fft.fftfreq(len(data), d = sampling_length)
fft = np.fft.fft(data)
x = freq[:len(data)/2]
for i in range(len(x)):
if x[i] > 0.005: # cut off all frequencies higher than 0.005
fft[i] = 0.0
fft[len(data)/2 + i] = 0.0
inverse = np.fft.ifft(fft)
これは正しい手順ですか?結果にinverse
は複雑な値が含まれているため、混乱します。
1
FFTを学んでいたとき、このブログの投稿は非常に役に立ちました。glowingpython.blogspot.com/2011/08/...
—
デヴィッド・プールに