编写python程序,窗函数法设计一个FIR数字滤波器,数字滤波器的技术指标如下:通带边界频率为0.4pi rad,阻带截止频率为0.6pi rad,通带内允许的最大衰减为0.5dB,阻带内允许的最小衰减为50dB
时间: 2023-08-30 10:05:48 浏览: 86
下面是一个使用窗函数法设计FIR数字滤波器的Python程序:
```python
import numpy as np
import matplotlib.pyplot as plt
# 指定滤波器的参数
fp = 0.4 * np.pi # 通带边界频率
fs = 0.6 * np.pi # 阻带截止频率
Ap = 0.5 # 通带内允许的最大衰减
As = 50 # 阻带内允许的最小衰减
# 计算滤波器的阶数
delta_p = (10**(Ap/20) - 1) / (10**(Ap/20) + 1)
delta_s = 10**(-As/20)
N = np.ceil((np.log10(delta_s/delta_p)) / (2*np.log10(fs/fp)))
# 计算滤波器的截止频率和窗函数
wc = (fp + fs) / 2
h = np.hamming(N+1)
# 计算滤波器的频率响应
n = np.arange(-N/2, N/2+1)
h = h * np.sin(wc*(n-N/2)) / (np.pi*(n-N/2))
H = np.abs(np.fft.fft(h, 1024))
# 绘制滤波器的频率响应
w = np.linspace(0, np.pi, 1024)
plt.plot(w, 20*np.log10(H))
plt.xlabel('Frequency (rad)')
plt.ylabel('Magnitude (dB)')
plt.title('FIR Digital Filter')
plt.grid()
plt.show()
```
这个程序使用了一个汉明窗口来设计FIR数字滤波器,计算了滤波器的阶数、截止频率和窗函数,并且绘制了滤波器的频率响应。你可以根据需要修改程序中的参数来得到不同的滤波器设计。
阅读全文