使用fdatool工具箱设计滤波器及工程应用

1.Fdatool工具箱使用方法

滤波器有IIR和FIR两种滤波器设计方式,分别对应以下公式:

 从公式上可以看出,FIR的输出只与输入X(n-k)有关,而IIR则不仅与输入X(n-k)有关,还与输出y(n-k))有关,因此IIR是一种递归函数。

IIR滤波器的优点是,对于与FIR类似的滤波器,可以使用较低的阶数或项数. 这意味着实现相同结果所需的计算量更少,使得IIR的计算速度更快. 然而,IIR具有非线性相位和稳定性问题. 这有点像龟兔赛跑的寓言,FIR滤波器就像赛跑中的乌龟—缓慢而稳定,总是能跑完全程. 兔子就像IIR滤波器—非常快,但有时崩溃,并没有完成比赛。

Matlab有滤波器工具箱fdatool,我们可以使用此工具箱设计我们想要的滤波器,进而应用到工程当中去,打开方法是再Matlab的命令行窗口输入fdatool即可。

Matlab中可以选择IIR和FIR两种滤波器设计方法,对于对时延要求严格的系统来讲,需要选择IIR滤波方法。根据滤波的具体要求,可选择低通Lowpass、高通Highpass、带通Bandpass、带阻Bandstop滤波方式。以低通滤波器为例,Fs是系统的采样频率,Fc是截至频率,Filter order是滤波器阶数,阶数越高,计算速度越慢,滤波器的频率下降会更清晰

下图分别是选取的10阶和2阶的滤波器的幅频曲线,截至频率均为10khz。可以看出10阶的衰减频率更靠后,边界更明确。

选取好响应类型Response Type、设计方法Designed Method、滤波阶数(Filter Order)、采样频率Fs、截至频率Fc,点击Designed Filter按键,即可得到Matlab根据输入的需求设计好的滤波器。可以选择查看滤波器的幅频曲线Magnitude Response、相频曲线Phase Response等。

  1. 滤波器的使用_转为C程序

Fdatool根据我们的需求设计出相应的滤波器,该怎么使用呢,选择Filter Confficients可以得到设计出的滤波器系数,如下图所示:

Numerator对b,Denoinator对应a

 

 根据以上公式可以得到:

a (1)*Y(n) = b(1) * x(n) + b(2)* x(n-1) - a(2)*y(n-1)

带入例子生成的系数b(1) =0.4341, b(2) =0.4341, a(2)=-0.1316

可得:

Y(n) = 0.4341*x(n) + 0.4341*x(n-1)+0.1316*Y(n-1)

转换成C代码则为:

Y = 0.4341*X + 0.4341*XLast + 0.1316*YLast;

XLast = X;YLast=Y;

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想想叫啥名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值