• 用FIR滤波器设计数字微分器和数字希尔伯特变换器


    一、数字微分器

    理想数字微分器的幅值响应为

    离散域处理中,若微分器长M为奇数(第3类滤波器),则转变为

    若微分器长M为偶数(第4类滤波器),则转变为

     

    案例1、用等波纹法设计数字微分器,微分器长N=33。程序如下:

    1. clear all; clc; close all;
    2. N=33; % 设置滤波器长
    3. f=0:0.05:0.95; % 设置频率点
    4. a=f*pi; % 设置对应频率点的幅值
    5. b=firpm(N,f,a,'differentiator'); % 用等波纹法设计
    6. [db,mag,pha,grd,w]=freqz_m(b,1); % 求频域响应
    7. % 作图
    8. subplot 211; stem(b,'k');
    9. title('微分器的脉冲响应')
    10. xlabel('样点'); ylabel('幅值')
    11. subplot 212; plot(w/pi,mag,'k','linewidth',2);
    12. grid; title('微分器的幅频特性')
    13. xlabel('归一化频率'); ylabel('幅值')
    14. set(gcf,'color','w');

    运行结果如下:

     

    分析:

    ①在firpm函数中可以带有'differentiator'参数,表示设计微分器,这给微分器的设计带来了便利。
    ②我们设置了微分器阶数是33,微分器系数长M为34(偶数),所以得到的微分器是第4类滤波器。有的文献指出,只有第4类FIR滤波器适合做微分器。微分器阶数是可以改变的,可根据具体情况自行设定,但为了保证微分器是第4类FIR滤波器,阶数应为奇数。

    二、数字希尔伯特变换

    线性相位希尔伯特变换器的理想频率响应为

     

    在离散条件下幅度响应是纯虚数,为

     

    式中:M为奇数。

    案例2、用等波纹法设计数字希尔伯特变换器,变换器系数长M=51。程序如下:

    1. clear all; clc; close all;
    2. N=50; % 设置滤波器长
    3. M=N+1; % 希尔伯特变换器长
    4. f = [0.05,0.95]; % 设置频率点
    5. a = [1 1]; % 设置对应频率点的幅值
    6. h = firpm(N,f,a,'hilbert'); % 用等波纹法设计
    7. [db,mag,pha,grd,w]=freqz_m(h,[1]); % 求频域响应
    8. % 作图
    9. subplot(1,1,1)
    10. subplot(2,1,1); stem([0:N],h,'k');
    11. title('希尔伯特变换器的脉冲响应')
    12. xlabel('样点'); ylabel('幅值')
    13. axis([0,N,-0.8,0.8])
    14. set(gca,'XTickMode','manual','XTick',[0,N])
    15. set(gca,'YTickMode','manual','YTick',[-0.8:0.2:0.8]);
    16. subplot(2,1,2); plot(w/pi,mag,'k','linewidth',2);
    17. grid; title('希尔伯特变换器的幅频特性')
    18. xlabel('归一化频率'); ylabel('幅值')
    19. set(gca,'XTickMode','manual','XTick',[0,f,1])
    20. set(gca,'YTickMode','manual','YTick',[0,1]);
    21. set(gcf,'color','w');

    运行结果如下:

    分析: 

    ①在firpm函数中可以带有'hilbert'参数,表示设计希尔伯特变换器,这给希尔伯特变换器的设计带来了便利。
    ②程序中设置了希尔伯特变换器系数长是51,滤波器阶数N=50,系数长是奇数,所以得到的希尔伯特变换器是第3类滤波器。希尔伯特变换器阶数是可以改变的,可根据具体情况自行设定,但为了保证希尔伯特变换器是第3类FIR滤波器,阶数应为偶数,系数长为奇数。

    参考文献:MATLAB数字信号处理85个实用案例精讲——入门到进阶;宋知用(编著) 

  • 相关阅读:
    【npm】常见错误
    企业运维实战 ELK日志分析平台 Kinaba (Kibana安装、Kinaba安全认证、Kinaba监测)
    做好接口测试
    【Gazebo入门教程】第八讲 Gazebo中的日志与回放
    用Python制作可视化GUI界面,一键实现多种风格的照片处理
    教育案例分享 | 安全狗云安全体系为高校提升立体化纵深防御能力
    Nacos配置的加载规则详解(spring cloud 组件教程大全六)
    文娱行业搜索最佳实践
    Ubuntu 20.04怎么编译AutoWare源码
    【2023,学点儿新Java-06】JDK17安装教程 | jdk1.8中的目录及其含义 | 为什么安装完jdk还要配置path环境变量?| 详细教学:配置path环境变量 | jdk配置方案
  • 原文地址:https://blog.csdn.net/qq_42233059/article/details/126518229