zoukankan      html  css  js  c++  java
  • 【STM32H7的DSP教程】第41章 FIR滤波器的群延迟(重要)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547

    第41章       FIR滤波器的群延迟(重要)

    本章节为大家介绍FIR滤波器的群延迟问题。

    41.1 FIR滤波器介绍

    41.2 总结

    41.1 FIR滤波后的群延迟

    波形经过FIR滤波器后,输出的波形会有一定的延迟。对于线性相位的FIR,这个群延迟就是一个常数。但是实际应用中这个群延迟是多少呢? 关于群延迟的数值,filterDesigner工具箱会根据用户的配置计算好。

    比如前面章节设计的28阶FIR高通,低通,带通和带阻滤波器的群延迟就是14,反映在实际的采样值上就是滤波后输出数据的第15个才是实际滤波后的波形数据起始点。

    下面是群延迟采样点的位置:

     

    细心的读者可能发现全面做低通,高通,带通和带阻滤波后,输出的波形前面几个点感觉有问题,其实就是群延迟造成的。

    为了更好的说明这个问题,下面再使用Matlab举一个低通和一个高通滤波的例子:信号由50Hz正弦波和200Hz正弦波组成,采样率1Kbps,截止频率125Hz,采样320个数据,采用函数fir1进行设计,滤波器阶数设置为28。下面是低通滤波器的Matlab代码,将原始信号从第一个点开始显示,而滤波后的信号从群延迟后的第15个点开始显示:

    fs=1000;                  %设置采样频率 1K
    N=320;                    %采样点数      
    n=0:N-1;
    t=n/fs;                    %时间序列
    f=n*fs/N;                  %频率序列
    
    x1=sin(2*pi*50*t);
    x2=sin(2*pi*200*t);
    x=sin(2*pi*50*t)+sin(2*pi*200*t);  %50Hz和200Hz正弦波混合               
    
    plot(n, x1, 'b');   %绘制信号x的波形  
    xlabel('时间');
    ylabel('幅值');
    title('原始信号和滤波后信号');
    hold on;
      
    b=fir1(28, 125/500);     %获得滤波器系数,截止频率125Hz.
    y=filter(b, 1, x);
    plot(n(1:305), y(15:319), 'r');
    legend('原始信号','滤波后信号');
    grid on;

    Matlab的运行结果如下:

     

    可以看出,显示波形基本重合,这个说明14个采样点的群延迟是正确的。下面同样使用上面的那个例子实现一个高通滤波器,截止频率是125Hz,阶数同样设置为28,将原始信号从第一个点开始显示,而滤波后的信号从群延迟后的第15个点开始显示,Matlab运行代码如下:

    fs=1000;                  %设置采样频率 1K
    N=320;                   %采样点数      
    n=0:N-1;
    t=n/fs;                    %时间序列
    f=n*fs/N;                  %频率序列
    
    x1=sin(2*pi*50*t);
    x2=sin(2*pi*200*t);
    x=sin(2*pi*50*t)+sin(2*pi*200*t);  %50Hz和200Hz正弦波混合               
    
    plot(n, x2, 'b');   %绘制信号x的波形  
    xlabel('时间');
    ylabel('幅值');
    title('原始信号和滤波后信号');
    hold on;
      
    b=fir1(28, 125/500, 'high');     %获得滤波器系数,截止频率125Hz.
    y=filter(b, 1, x);
    plot(n(1:305), y(15:319), 'r');
    legend('原始信号','滤波后信号');
    grid on;

    Matlab运行结果如下:

     

    可以看出,显示波形基本重合,这个说明14个采样点的群延迟也是是正确的。大家在使用FIR滤波器的时候一定要注意这个问题。

    41.2 总结

    本章节介绍的知识点比较重要,首次使用FIR容易在这个地方不理解。

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/armfly/p/15109638.html
Copyright © 2011-2022 走看看