我是信号处理的新手,尤其是 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
包含复杂的值,这让我感到困惑。