使用 Parks-McClellan 算法(firpm)创建一个 50 阶等波纹 FIR 带通滤波器,要求如下:
以 1 kHz 采样频率,通带为 200 Hz 和 300 Hz 之间的频率,并且通带两侧的过渡带宽度为50 Hz。使优化拟合权重为权重为 3 的低频阻带、权重为 1 的通带和权重为 100 的高频阻带,并显示滤波器的对数模图。
代码:
%滤波器阶数及采样频率N = 50;fs = 1e3; %截止频率以及通频带Fstop1 = 150;Fpass1 = 200;Fpass2 = 300;Fstop2 = 350;%三段频段的权值Wstop1 = 3;Wpass = 1;Wstop2 =100;b = firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 fs/2]/(fs/2), ...[0 0 1 1 0 0],[Wstop1 Wpass Wstop2]);fvtool(b,1)
如图:
函数结构:b = firpm(n,f,a,w)
其中f为归一化后的频率段,参考频段归一化
当然我们也可以通过上图进行验证归一化结果:
[150 200 300 350] / (1000 /2) = [0.3 0.4 0.6 0.7] , 对应图横坐标上截止频率及通频带的点
matlab更多关于滤波器参数设定参考:signal_tb.pdf (udel.edu)