这篇博文在于讨论 impz 函数的使用。

MATLAB帮助文档对impz的介绍:【 MATLAB 】impz函数介绍(数字滤波器的脉冲响应)

我在 MATLAB 中查看 impz 的帮助文档时,始终看的不是太明白这个函数的使用,于是我根据一个例子,对这个函数做了一点分析,解决了一些我的疑惑,记录于此。

帮助文档上对这个函数的概括是数字滤波器的脉冲响应。

所谓的数字滤波器不就是一个线性时不变系统而已,根据脉冲响应的分子分母系数,可以得到该系统的脉冲响应。这个脉冲响应可以用下面的有理传递函数给出:

或者由差分方程给出:

上面的系数用系数向量表示为:

分母系数为:

分子系数为:

因此,impz函数的语法格式有这么一条:

[h,t] = impz(b,a)

这里的b和a向量就是分子和分母系数的向量。

得到的h就是该系统的脉冲响应,而 t 是脉冲响应值对应的位置。

对于这个函数的使用,可以直接使用右边的部分,而不出现左边的部分,即 impz(b,a),而文档对其解释如下:

impz(...) with no output arguments plots the impulse response of the filter.

意思是直接画出该系统的脉冲响应。


我们举个例子来理解:

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

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

要求计算并画出它的脉冲响应。

题解:

跟上上述对impz函数地简单介绍,其实我们可以直接画出它的脉冲响应了。

b = [1];
a = [1,-1,0.9];
[h,t] = impz(b,a)
stem(t,h);
title('Impulse Response');
xlabel('n');ylabel('h(n)');

也可以:

clc
clear
close allb = [1];
a = [1,-1,0.9];impz(b,a);
ylim([-1.2,1.2]);

上面两种方法画出的脉冲响应其实是一样的。


上面这个简单的用法也就告一段落,下面我们再看一条变体语法:

[h,t] = impz(...,n) computes n samples of the impulse response when n is an integer (t = [0:n-1]'). If n is a vector of integers, impz computes the impulse response at those integer locations, starting the response computation from 0 (and t = n or t = [0 n]). If, instead of n, you include the empty vector, [], for the second argument, the number of samples is computed automatically.
只看语法格式,那么一大串英文介绍暂时不管,后面我会慢慢解释。

[h,t] = impz(...,n)

后面的这个n是什么玩意?

它的用意我用自己的语言叙述下就是如果我要求的脉冲响应不是从0开始,那么我就可以使用这个n向量来指定脉冲响应的位置范围。

同样使用一个实例来说明,同样是上面的那个差分方程表示的系统,我们求它的脉冲响应。

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

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

要求计算并画出在 的脉冲响应h(n)。

脚本程序如下:

clc
clear
close allb = [1];
a = [1,-1,0.9];
n = [-20:120]';impz(b,a,n);
ylim([-1.2,1.2]);

这里的n是一个行向量或者一个列向量,无关紧要。

也可以使用下面的方法来产生:

clc
clear
close allb = [1];
a = [1,-1,0.9];
n = [-20:120]';[h,t] = impz(b,a,n)
stem(t,h);
title('Impulse Response');
xlabel('n');ylabel('h(n)');

上面画图的函数stem(t,h),也可以改成stem(n,h)。

这间接说明了t和n是一样的,函数产生的t是一个列向量,如果n也是一个列向量的话,那么二者一致。

可以使用这条语句进行验证:

n == h

可以得到一个和n同维度的向量,元素全为1.(可自行验证。)

最后,需要说明的是由于是同一个系统,所以指定与不指定n产生的脉冲响应都是一样的,只不过这里指定了显示脉冲响应的位置在-20,...,100.



再给出一个例子:

首先使用ellip函数产生一个满足如下要求的滤波器,关于ellip函数介绍如下:

【 MATLAB 】ellip 函数介绍(椭圆滤波器设计)

设计具有归一化通带频率0.4的四阶低通椭圆滤波器。 指定0.5 dB的通带纹波和20 dB的阻带衰减。 绘制脉冲响应的前50个样本。

clc
clear
close all
%
% Impulse Response of an Elliptic Lowpass Filter
% Design a fourth-order lowpass elliptic filter with normalized passband frequency 0.4.
% Specify a passband ripple of 0.5 dB and a stopband attenuation of 20 dB.
% Plot the first 50 samples of the impulse response.
[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

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

  1. matlab一直系统函数画脉冲响应,【 MATLAB 】使用 impz 函数计算并画出脉冲响应

    这篇博文在于讨论 impz 函数的使用. 我在 MATLAB 中查看 impz 的帮助文档时,始终看的不是太明白这个函数的使用,于是我根据一个例子,对这个函数做了一点分析,解决了一些我的疑惑,记录于此 ...

  2. matlab一直系统函数画脉冲响应,MATLAB之使用 impz 函数计算并画出脉冲响应

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x ' C" [+ n1 g# Q- ]" A这篇在于讨论 impz 函数的使用. |9 u8 v8 }& ...

  3. 【 MATLAB 】impz函数介绍(数字滤波器的脉冲响应)

    这篇博文将MATLAB 帮助文档上的内容简单的贴上,便于我写其他博文引用,以及查看使用. impz Impulse response of digital filter Syntax [h,t] =  ...

  4. matlab滤波器脉冲响应,【 MATLAB 】impz函数介绍(数字滤波器的脉冲响应)

    这篇博文将MATLAB 帮助文档上的内容简单的贴上,便于我写其他博文引用,以及查看使用. impz Impulse response of digital filter Syntax [h,t] =  ...

  5. 分支界限算法【0-1背包问题】按照优先队列式(LC)分支限界法求解0-1背包问题, 并给出限界函数,并画出该实例的状态空间树。

    目   录 回溯算法[0-1背包问题] 分支界限算法[0-1背包问题] 作业题(期末考试必考) 小结 回溯算法[0-1背包问题] 分支界限算法[0-1背包问题] 解决思路:采用优先队列式分支限界 Ø ...

  6. matlab中pwelch函数计算功率谱密度

    出处:Matlab用pwelch函数计算功率谱 - 知乎 (zhihu.com) 1:函数形式 [pxx,f] = pwelch(x,window,noverlap,NFFT,fs) 该函数可以自适应 ...

  7. matlab高斯白噪声频谱图,如何用MATLAB产生高斯白噪声,并且画出图形?

    如何用MATLAB产生高斯白噪声,并且画出图形? 来源:互联网  宽屏版  评论 2009-06-19 02:34:10 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 ...

  8. matlab中模型函数计算出 Inf,拟合无法继续。请尝试使用或收紧系数的上界和下界。

    使用matlab中曲线拟合器(cftool)进行曲线拟合后,导出函数在调用后会出现 模型函数计算出 Inf,拟合无法继续. 请尝试使用或收紧系数的上界和下界,报错,拟合无法继续进行. 解决办法:根据拟 ...

  9. 用MATLAB实现高斯投影正反算且画出高斯投影图形

    具体代码如下: 使用matlab编程实现 clear % 选取画图的区域 for i = 60:1:120[P0(i-59,1),P0(i-59,2)]=GSBL2xym(0,i,90);[P1(i- ...

最新文章

  1. myeclipse 10创建maven项目
  2. mysql数据库千万级别数据的查询优化和分页测试
  3. boost::interprocess::message_queue用法的测试程序
  4. Boost::context模块callcc的throw测试程序
  5. mysql 复制 二进制文件命令_Mysql中复制详细解析
  6. 决策树随笔-深度AI科普团队
  7. mysql group by_技术分享 | 回顾 MySQL 的 MTS
  8. xposed hook java_[原创]Android Hook 系列教程(一) Xposed Hook 原理分析
  9. 限定某个目录禁止解析php 限制user_agent php相关配置
  10. 2018上IEC计算机高级语言(C)作业 第0次作业
  11. spss与python和sql区别_Python/Excel/SPSS/SQL数据处理方法比较之2 - 数据查看
  12. Talib技术因子详解(八)
  13. html css 书签,CSS实现书签图案的效果
  14. matlab 自定义直方图匹配_[转载]Matlab 直方图均衡化和直方图匹配
  15. 91手机助手官网iPhone版 v5.6.1 官方版
  16. Matlab实现基于元胞自动机模拟室内人员疏散的最基本模型
  17. 互联网金融涌动下的冲动与借债
  18. matlab中integrator,matlab:Simulink Integrator的理解
  19. 立志做中国市场TOP2,新华三云屏底气何来?
  20. 年薪80W的大数据开发【1024G全套资源】都在这儿!

热门文章

  1. oracle 11g ORA-12514
  2. C#实现Web应用程序定时启动任务
  3. DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏
  4. default activity not found怎么解决_我怎么也没想到“羽绒服”的英文是down jacket,哪里down了?...
  5. 栈和堆存储在计算机RAM中,堆内存和栈内存及C++内存分配
  6. matlab 定义矩阵_MATLAB与Python,Mathematica由高维转化一维矩阵的方式的不同
  7. 测试逐飞的MM32F3277 MicroPython开发板的基本功能
  8. 三极管的耐压与hFE之间是什么关系?
  9. 智能车竞赛技术报告 | 智能车视觉 - 太原工业学院 - 晋速-轩辕星
  10. 十六届全国大学生智能车竞赛线上比赛的队伍看过来,你们需要的图片都在这儿