IIR低通滤波器的设计代码
时间: 2023-07-27 13:07:09 浏览: 54
下面是一种基于巴特沃斯滤波器的IIR低通滤波器设计代码示例:
```python
import numpy as np
from scipy.signal import butter, lfilter
def butter_lowpass(cutoff, fs, order=5):
nyq = 0.5 * fs
normal_cutoff = cutoff / nyq
b, a = butter(order, normal_cutoff, btype='low', analog=False)
return b, a
def butter_lowpass_filter(data, cutoff, fs, order=5):
b, a = butter_lowpass(cutoff, fs, order=order)
y = lfilter(b, a, data)
return y
```
其中,`butter_lowpass`函数用于计算低通滤波器的系数,`butter_lowpass_filter`函数用于对数据进行滤波。
使用示例:
```python
# 采样频率
fs = 1000.0
# 截止频率
cutoff = 100.0
# 生成一组随机信号
t = np.linspace(0, 1, 1000, False) # 1秒钟,采样频率1000Hz
data = np.sin(2*np.pi*5*t) + np.sin(2*np.pi*50*t) + np.random.randn(len(t)) * 0.2
# 滤波
filtered_data = butter_lowpass_filter(data, cutoff, fs, order=6)
```
可以根据具体需求修改截止频率、采样频率和阶数等参数。