【 MATLAB 】使用 filter 函数产生给定线性时不变系统的单位阶跃响应

举报
李锐博恩 发表于 2021/07/16 00:47:40 2021/07/16
【摘要】   先给出filter的大致介绍:【 MATLAB 】filter 函数介绍(一维数字滤波器) 上篇博文写了产生一个系统的脉冲响应的博文,有兴趣可以看看:【 MATLAB 】使用 impz 函数计算并画出脉冲响应 使用到的filter语法如下: y = filter(b,a,x) 对具有分子系数向量b和分母系数向量a的系统函数对x进行滤波,得到响应y。 ...

 

先给出filter的大致介绍:【 MATLAB 】filter 函数介绍(一维数字滤波器)

上篇博文写了产生一个系统的脉冲响应的博文,有兴趣可以看看:【 MATLAB 】使用 impz 函数计算并画出脉冲响应

使用到的filter语法如下:

y = filter(b,a,x)

对具有分子系数向量b和分母系数向量a的系统函数对x进行滤波,得到响应y。

如果x为一个单位阶跃序列,则响应就是单位阶跃响应。

这就是理论上的基础思路。

给出实例分析:

这个系统使用差分方程来描述如下:

y(n) - y(n-1) + 0.9y(n-2) = x(n)

要求计算并画出它在 你= -20,..., 100的单位阶跃响应。

写下面的MATLAB脚本之前必须声明的是下面脚本中使用了之前博文中写的一个阶跃序列的函数:


  
  1. function [x,n]=stepseq(n0,n1,n2);
  2. % generate x(n) = u(n - n0); n1 <= n <= n2
  3. %——————————————————————
  4. %[x,n] = stepseq(n0, n1, n2);
  5. %
  6. n = [n1:n2];
  7. x = [(n-n0) >= 0];

更多相关信号的函数见博文:【 MATLAB 】基本序列运算及其MATLAB的等效表示

下面使用MATLAB脚本实现:


  
  1. clc
  2. clear
  3. close all
  4. b = 1;
  5. a = [1,-1,0.9];
  6. % n = [-20:100];
  7. [x,n] = stepseq(0,-20,100);
  8. stem(n,x);
  9. title('step sequence');
  10. xlabel('n');ylabel('x(n)');
  11. ylim([0,1.2]);
  12. figure;
  13. s = filter(b,a,x);
  14. stem(n,s);
  15. title('step response');
  16. xlabel('n');ylabel('s(n)');

 

最后想说的是这篇博文的行文思路和上篇博文一致,但是简化了许多,如果不明白请务必看下上篇博文:

 

【 MATLAB 】使用 impz 函数计算并画出脉冲响应

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/83351794

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。