利用 SCILAB 设计 FIR 滤波器(Minimax法)

来源:互联网 发布:淘宝上找代理商 编辑:程序博客网 时间:2024/06/03 16:01

所谓 Minimax 方法就是指设计的指定阶数的FIR滤波器的幅度响应的最大偏离最小化。SCILAB 提供了eqfir 函数可以方便的使用 minmax 法设计FIR 滤波器。

 

[hn]=eqfir(nf,bedge,des,wate)

其中:

Nf: FIR 滤波器的阶数

Bedge: M * 2 的矩阵,矩阵的每一行对应一个频率段

Des: 个元素的向量,每个元素给出一个频率段的期望的幅度响应

Wate: 个元素的向量,给出每个频率段的加权系数

 

返回值:

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



1 0