IIR过滤器python代码| LPF, HPF, BPF, BSF类型
这个IIR过滤器python代码脚本涵盖了在python中模拟LPF, HPF, BPF和BSF过滤器类型。这些图是作为这个IIR python脚本的输出提供的。
作品简介:IIR滤波器使用当前输入样本值、过去输入样本和输出样本来获取当前输出样本值。

下面是简单的IIR方程。
y (n) = b (0) x (n) + b (1) x (n - 1) + b b (2) x (n - 2) + (3) x (n) + (1) y (n - 1) + (2) y (n - 2) + (3) y (n - 3)
请参考FIR vs IIR滤波器获取更多信息。
IIR过滤器python代码
进口matplotlib。Pyplot作为PLT
进口scipy。信号作为信号
将numpy导入为np
从数学导入圆周率
plt.close(所有的)
根据巴特沃斯规格设计IIR过滤器
Fs = 1000 #采样频率
n = 7 #过滤器的阶数
fc = 100 #滤波器截止频率(LPF/HPF)
Fc1 = np。array([200,400]) # BPF/BSF的启动和停止频率
w_c = 2 * fc/Fs
w_c1 = 2 * fc1/Fs
#不同类型的IIR过滤器配置
[b1, a1] = sig.butter(n, w_c, btype='lowpass')
[b2, a2] = sig.butter(n, w_c, btype='highpass')
[b3, a3] = sig.butter(n, w_c1, btype='带通')
[b4, a4] = sig.butter(n, w_c1, btype='bandstop')
IIR滤波器的频率响应(LPF型)
[w1, h1] = sig.freqz(b1, a1, worN=2000)
w_lpf = Fs*w1/(2*pi)
H_db_lpf = 20 * np.log10(abs(h1))
# IIR滤波器的频率响应(HPF型)
[w2, h2] = sig.freqz(b2, a2, worN=2000)
w_hpf = Fs*w2/(2*pi)
H_db_hpf = 20 * np.log10(abs(h2))
IIR滤波器的频率响应(BPF型)
[w3, h3] = sig.freqz(b3, a3, worN=2000)
w_bpf = Fs*w3/(2*pi)
H_db_bpf = 20 * np.log10(abs(h3))
# IIR滤波器的频率响应(BSF型)
[w4, h4] = sig.freqz(b4, a4, worN=2000)
w_bsf = Fs*w4/(2*pi)
H_db_bsf = 20 * np.log10(abs(h4))
#地块
图,轴= plt。次要情节(2,2)
轴(0,0)。情节(w_lpf h_db_lpf)
轴(0,0)。set_title("IIR过滤器响应(LPF类型)")
轴(0,0)。set_xlabel(“频率(赫兹)”)
轴(0,0)。set_ylabel(“(dB)级”)
轴[0,1]。情节(w_hpf h_db_hpf)
轴[0,1]。set_title("IIR过滤器响应(HPF类型)")
轴[0,1]。set_xlabel(“频率(赫兹)”)
轴[0,1]。set_ylabel(“(dB)级”)
轴(1,0)。情节(w_bpf h_db_bpf)
轴(1,0)。set_title("IIR过滤器响应(BPF类型)")
轴(1,0)。set_xlabel(“频率(赫兹)”)
轴(1,0)。set_ylabel(“(dB)级”)
轴[1]。情节(w_bsf h_db_bsf)
轴[1]。set_title("IIR过滤器响应(BSF类型)")
轴[1]。set_xlabel(“频率(赫兹)”)
轴[1]。set_ylabel(“(dB)级”)
plt.tight_layout ()
plt.show ()
进口scipy。信号作为信号
将numpy导入为np
从数学导入圆周率
plt.close(所有的)
根据巴特沃斯规格设计IIR过滤器
Fs = 1000 #采样频率
n = 7 #过滤器的阶数
fc = 100 #滤波器截止频率(LPF/HPF)
Fc1 = np。array([200,400]) # BPF/BSF的启动和停止频率
w_c = 2 * fc/Fs
w_c1 = 2 * fc1/Fs
#不同类型的IIR过滤器配置
[b1, a1] = sig.butter(n, w_c, btype='lowpass')
[b2, a2] = sig.butter(n, w_c, btype='highpass')
[b3, a3] = sig.butter(n, w_c1, btype='带通')
[b4, a4] = sig.butter(n, w_c1, btype='bandstop')
IIR滤波器的频率响应(LPF型)
[w1, h1] = sig.freqz(b1, a1, worN=2000)
w_lpf = Fs*w1/(2*pi)
H_db_lpf = 20 * np.log10(abs(h1))
# IIR滤波器的频率响应(HPF型)
[w2, h2] = sig.freqz(b2, a2, worN=2000)
w_hpf = Fs*w2/(2*pi)
H_db_hpf = 20 * np.log10(abs(h2))
IIR滤波器的频率响应(BPF型)
[w3, h3] = sig.freqz(b3, a3, worN=2000)
w_bpf = Fs*w3/(2*pi)
H_db_bpf = 20 * np.log10(abs(h3))
# IIR滤波器的频率响应(BSF型)
[w4, h4] = sig.freqz(b4, a4, worN=2000)
w_bsf = Fs*w4/(2*pi)
H_db_bsf = 20 * np.log10(abs(h4))
#地块
图,轴= plt。次要情节(2,2)
轴(0,0)。情节(w_lpf h_db_lpf)
轴(0,0)。set_title("IIR过滤器响应(LPF类型)")
轴(0,0)。set_xlabel(“频率(赫兹)”)
轴(0,0)。set_ylabel(“(dB)级”)
轴[0,1]。情节(w_hpf h_db_hpf)
轴[0,1]。set_title("IIR过滤器响应(HPF类型)")
轴[0,1]。set_xlabel(“频率(赫兹)”)
轴[0,1]。set_ylabel(“(dB)级”)
轴(1,0)。情节(w_bpf h_db_bpf)
轴(1,0)。set_title("IIR过滤器响应(BPF类型)")
轴(1,0)。set_xlabel(“频率(赫兹)”)
轴(1,0)。set_ylabel(“(dB)级”)
轴[1]。情节(w_bsf h_db_bsf)
轴[1]。set_title("IIR过滤器响应(BSF类型)")
轴[1]。set_xlabel(“频率(赫兹)”)
轴[1]。set_ylabel(“(dB)级”)
plt.tight_layout ()
plt.show ()
IIR python输出图
以下是上述IIR python代码的图。

Python中其他有用的DSP代码
相关python脚本
Python编程教程
Convolution python脚本
BPSK QPSK 16QAM 64QAM调制
16点FFT代码
OFDM发射机仿真代码
瑞利衰落信道
瑞尔斯衰落信道
ASK调制python代码
FSK调制python代码
PSK调制python代码
FIR滤波器python代码
MATLAB代码的有用链接
OFDM前导信号的产生
时间偏差估计
频率估计
信道估计
11a WLAN信道
PN序列生成
OFDMA Tx Rx
AES DES
载波聚合
CCDF
冷杉过滤器
IIR滤波器
低通FIR
维特比译码器
CRC8 CRC32