使用 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)