一维FFT变换 #
import numpy as np
fft = np.fft.fft(data)
fftshift = np.fft.fftshift(fft)
fre = np.fft.fftshift(np.fft.fftfreq(d=ts, n=signal.size))
data
是时域一维信号, 如[1, 2, 3, ..., 100]
- 通过
np.fft.fft
调用得到len(data)
个频域分量, 是复数表示 np.fft.fftshift
将零频率分量移动到频谱中心np.fft.fftfreq
更具采样周期和数据长度得到经过np.fft.fft
计算的每个频域分量的频率
一维FFT逆变换 #
mask = np.ones(len(fftshift))
mask[np.where(((low_freq < fre) & (fre < high_freq)) | ((-low_freq > fre) & (fre > -high_freq)))] = 0
fftshift[np.where(mask != 0)] = 0
ifftshift = np.fft.ifftshift(fftshift)
data = np.fft.ifft(ifftshift)
mask
是一个简单的带通滤波器
比如这样的原始信号, 其频谱图如下:
经过mask
滤波后可能得到类似这样的频谱图: