逆谐波均值滤波器的python代码实现
时间: 2024-11-28 07:14:25 浏览: 8
基于Matlab实现谐波均值滤波器设计(源码+图片).rar
5星 · 资源好评率100%
逆谐波均值滤波器是一种数字信号处理技术,用于去除信号中的高频噪声。在Python中,可以使用Scipy库中的`signal`模块来实现。以下是简单的逆谐波均值滤波器(IIR)的实现示例:
```python
from scipy.signal import butter, filtfilt
import numpy as np
def iir_notch_filter(data, fs, freq_notch):
"""
使用Butterworth IIR notch filter进行滤波
:param data: 输入信号数组
:param fs: 采样频率
:param freq_notch: 需要去除的噪声频率 (Hz)
:return: 过滤后的信号
"""
# 设定滤波器参数
nyquist_freq = 0.5 * fs
order = 2 # 滤波器阶数
width = freq_notch / 2 # 健壮带宽,通常取 notch frequency 的一半
# 计算滤波器系数
b, a = butter(order, width / nyquist_freq, btype='bandstop') # band-stop filter即notch filter
# 应用滤波器
filtered_data = filtfilt(b, a, data)
return filtered_data
# 示例使用
data = np.random.normal(0, 1, 1000) # 假设这是你要过滤的信号
filtered_data = iir_notch_filter(data, 1000, 10) # 设置fs=1000 Hz 和噪声频率10 Hz
```
这个例子创建了一个二阶Butterworth带阻滤波器,用于消除频率为10 Hz的噪声。注意实际应用时,可能需要根据具体需求调整滤波器参数。
阅读全文