我是靠谱客的博主 动听马里奥,最近开发中收集的这篇文章主要介绍使用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;

最后

以上就是动听马里奥为你收集整理的使用fdatool工具箱设计滤波器及工程应用的全部内容,希望文章能够帮你解决使用fdatool工具箱设计滤波器及工程应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部