射频和无线供应商和资源的家

一站式满足您的射频和无线需求

IIR过滤器python代码| LPF, HPF, BPF, BSF类型

这个IIR过滤器python代码脚本涵盖了在python中模拟LPF, HPF, BPF和BSF过滤器类型。这些图是作为这个IIR python脚本的输出提供的。

作品简介:IIR滤波器使用当前输入样本值、过去输入样本和输出样本来获取当前输出样本值。

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 ()

IIR python输出图

以下是上述IIR python代码的图。

IIR过滤器Python输出图

Python中其他有用的DSP代码

MATLAB代码的有用链接

射频和无线教程


翻译本页
Baidu