• 【STM32F429的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
  • 相关阅读:
    第八周
    请停止使用strncpy
    WER设置
    如何在dump文件里找到真正的类this指针
    Visual Studio /analyze不好之处---漏报(四)
    Visual Studio /analyze不好之处---漏报(三)
    Visual Studio /analyze不好之处---漏报(二)
    Visual Studio /analyze不好之处(一)
    Visual Studio /analyze的好处
    符号杂谈
  • 原文地址:https://www.cnblogs.com/armfly/p/15109631.html
Copyright © 2020-2023  润新知