Python快速傅里叶变换 (FFT) 滤波:去除信号高频成分
在Python中,你可以使用NumPy库来实现快速傅里叶变换(FFT)和逆傅里叶变换(IFFT),从而有效地滤除信号中的高频成分。
首先,你需要导入NumPy库:
import numpy as np
接下来,使用np.fft.fft()函数进行快速傅里叶变换,将时域信号转换为频域信号:
signal = np.array([1, 2, 3, 4, 5]) # 输入信号数据
fft_result = np.fft.fft(signal) # 快速傅里叶变换
为了去除高频成分,你需要将对应于高频部分的频域信号元素设置为零。假设信号长度为5,要去除最后两个频率分量:
fft_result[3:] = 0 # 将高频部分设置为零
最后,使用np.fft.ifft()函数进行逆傅里叶变换,将频域信号转换回时域信号:
ifft_result = np.fft.ifft(fft_result) # 逆傅里叶变换
完整的代码如下:
import numpy as np
signal = np.array([1, 2, 3, 4, 5]) # 输入信号数据
fft_result = np.fft.fft(signal) # 快速傅里叶变换
fft_result[3:] = 0 # 将高频部分设置为零(假设信号长度为5,去除了最后两个频率分量)
ifft_result = np.fft.ifft(fft_result) # 逆傅里叶变换
最后,你可以打印ifft_result的实部来获取去除了高频部分的信号:
print(np.real(ifft_result))
注意,逆傅里叶变换的结果是一个复数数组,你需要使用np.real()函数来获取实部。
原文地址: https://www.cveoy.top/t/topic/pmBp 著作权归作者所有。请勿转载和采集!