我对信号处理尤其是FFT还是陌生的,因此不确定在这里是否做正确的事情,我对结果有些困惑。
我有一个离散的实函数(测量数据),并想在其上设置一个低通滤波器。选择的工具是带有numpy软件包的Python。我遵循以下过程:
- 计算我的函数的英尺
- 切断高频
- 执行反函数
这是我正在使用的代码:
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
包含复杂的值,这使我感到困惑。