python去除高频噪声的代码
以下是使用滤波器去除高频噪声的Python代码示例:
import numpy as np
from scipy import signal
# 生成带有高频噪声的信号
t = np.linspace(0, 1, 500)
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t) + np.sin(2*np.pi*30*t) + np.random.randn(len(t))*0.1
# 设计低通滤波器
nyq = 0.5 * 500 # 根据采样率计算奈奎斯特频率
low = 20 / nyq # 低通滤波的截止频率
b, a = signal.butter(4, low, 'lowpass') # 4阶巴特沃斯低通滤波器
# 应用滤波器
filtered_sig = signal.filtfilt(b, a, sig)
# 绘制原始信号和滤波后的信号
import matplotlib.pyplot as plt
plt.plot(t, sig, label='Original signal')
plt.plot(t, filtered_sig, label='Filtered signal')
plt.legend()
plt.show()
解释:
-
首先生成带有高频噪声的信号,这里是三个正弦波和一些高斯噪声的叠加。
-
设计一个低通滤波器,这里使用了4阶巴特沃斯低通滤波器。截止频率设置为20Hz,这意味着比20Hz高的频率将被过滤掉。
-
使用
signal.filtfilt函数应用滤波器。这个函数是一个双向滤波器,可以更好地去除相位延迟。 -
最后绘制原始信号和滤波后的信号,可以看到高频噪声已经被成功去除了
原文地址: https://www.cveoy.top/t/topic/crLl 著作权归作者所有。请勿转载和采集!