• 使用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代码则为:

    1. Y = 0.4341*X + 0.4341*XLast + 0.1316*YLast;
    2. XLast = X;YLast=Y;

  • 相关阅读:
    大数据技术大全
    centos7.6安装jdk1.8
    Espresso Sequencer:去中心化Rollups
    【Spring】Spring 事务和事务传播机制
    【Axure视频教程】表格编号函数
    知识图谱应用---智慧医疗
    mysql表中删除重复记录,只保留一条记录的操作
    FLASK中的鉴权的插件Flask-HTTPAuth
    重庆人文科技学院建立“软件安全产学研基地”,推动西南地区软件安全发展
    STM32微控制器的低功耗模式
  • 原文地址:https://blog.csdn.net/qq_35239859/article/details/127794727