使用Matlab实现脉冲响应不变法

超、凢脫俗 2022-11-17 05:28 270阅读 0赞

Matlab提供的impinvar(num, den, Fs)函数可实现脉冲响应不变法的转换过程, 其调用形式为 [numd, dend] = impinvar(num, den, Fs);

式中num和den分别表示模拟滤波器系统函数H(s)的分子多项式系数和分母多项式系数, Fs是脉冲响应不变法中的抽样频率, 单位是Hz. 输出变量numd和dend分别表示数字滤波器的系统函数H(z)的分子多项式系数和分母多项式系数.

[程序设计代码]

  1. % 使用Butterworth低通滤波器模板和脉冲响应不变法, 设计数字低通滤波器
  2. % 技术指标
  3. Wp = 0.1 * pi;
  4. Ws = 0.4 * pi;
  5. Ap = 1;
  6. As = 25;
  7. % 抽样频率 T
  8. T = 1;
  9. % 确定Butterworth模拟低通滤波器指标
  10. wp = Wp / T;
  11. ws = Ws / T;
  12. % 设计Butterworth模拟低通滤波器
  13. [N , wc] = buttord(wp, ws, Ap, As, 's');
  14. [num, den] = butter(N, wc, 's');
  15. % 使用脉冲响应不变法
  16. [numd, dend] = impinvar(num, den, 1 / T);
  17. % 在[0, pi]区间上选取2000个点
  18. W = linspace(0, pi, 2000);
  19. H = freqz(numd, dend, W);
  20. % 绘制系统的增益响应曲线
  21. plot(W / pi, 20 * log10(abs(H)));
  22. % 求系统关键指标
  23. W = [Wp, Ws];
  24. H = freqz(numd, dend, W);
  25. fprintf('Ap = %.4f\n', -20 * log10(abs(H(1))));
  26. fprintf('As = %.4f\n', -20 * log10(abs(H(2))));

[实际仿真结果]

发表评论

表情:
评论列表 (有 0 条评论,270人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Matlab仿真脉冲神经网络

    用Matlab仿真脉冲神经网络 脉冲神经网络是一种模仿神经元脉冲传递过程的神经网络模型。在脉冲神经网络中,神经元的活动通过离散的脉冲信号进行传递和处理。本文将介绍如何使用Ma