所谓 Minimax 方法就是指设计的指定阶数的FIR滤波器的幅度响应的最大偏离最小化。SCILAB 提供了eqfir 函数可以方便的使用 minmax 法设计FIR 滤波器。
[hn]=eqfir(nf,bedge,des,wate)
其中:
Nf: FIR 滤波器的阶数
Bedge: M * 2 的矩阵,矩阵的每一行对应一个频率段
Des: M 个元素的向量,每个元素给出一个频率段的期望的幅度响应
Wate: M 个元素的向量,给出每个频率段的加权系数
返回值:
Hn: FIR 滤波器的系数
下面给个例子:
hn=eqfir(33,[0 0.2;0.25 0.35;0.4 0.5],[0 1 0],[1 1 1]);
这个例子是设计一个 33 阶的FIR 滤波器, [0 0.2] 这一频段的期望幅度为0,[0.25 0.35] 这一频段的期望幅度为1,[0.4 0.5] 这一段的期望幅度为 0。没有给出的频段为过渡段,幅度为多少都可以。
可以用 frmag 函数来观测上面设计的滤波器的频率响应。
[xm,fr]=frmag(num,den,npts)
Num 为系统函数的分子。也就是我们FIR滤波器的系数。
Den 为系统函数的分母,对于FIR滤波器来说,分母为1。
Npts 为频率响应的数据点数
返回值;
Fr 为频率点
Xm 为对于的频率响应
对于上面的例子,我们可以写:
[xm,fr]=frmag(hn,1,100);
plot(fr,xm);