目录
1,题目
2,使用函数求解差分方程
1)基础知识
①filter函数和impz函数
②zeros函数
☀
2)绘制图像
☀
3)对应代码
如果连简单的信号都不会的,建议先看如下文章👇,之后再来看这篇文章,因为有些基础性的语句我没注释。就注释了新的内容。
matlab学习001-简单的矩阵输入运算及绘制信号曲线_
1,题目
设离散系统可由下列差分方程表示:
y(n)-y(n-1)+0.9y(n-2)=x(n)
计算n=(-5:40)时的系统的冲激响应。
2,使用函数求解差分方程
1)基础知识
①filter函数和impz函数
离散系统模型时域表示的matlab实现函数有filter函数和impz函数两种。其中,impz函数用于实现离散系统的单位冲激响应。接下来分别认识这两个函数:
filer:滤波器。
filter函数,是利用递归或非递归滤波器对数据进行滤波。因为一个离散系统可以看作是一个滤波器,系统的输出就是输入经过滤波器滤波的结果。filter函数有两种格式:
- y=filer(b,a,x) →表示由向量b和a组成的系统对输入x进行滤波,系统的输出为y。
- [y,zf]=filter(b,a,x,zi)→zi表示输入信号的初始状态,zf表示该函数返回的系统的最终状态向量。
impz函数
impz:Impulse response of digital filter:数字滤波器的脉冲响应 。
impz函数直接给出系统的单位冲击响应,其语法格式如下:
- impz(b,a)
②zeros函数
在matlab中,有很多方法可以产生单位冲击序列,但是最直接的方法就是使用matlab中的zeros函数。例如产生一个64点的单位冲击信号的matlab程序如下:
pulse=[1 zeros(1,63)]
结果输出如下:
在上面的程序代码中的zeros函数用法详细解释请参考matlab的文档,如下👇
绘制成图像:
单位冲击序列也可以使用如下代码绘制:
n=0:63;
impulse=(n==0);
stem(n,impulse);
2)绘制图像
3)对应代码
pulse=[1 zeros(1,63)] % 产生64点的单位冲激序列
a=[1 -1 0.9]; % y函数的系数
b=[1]; % x函数的系数
rfilter=filter(b,a,pulse); % 使用filter函数
rimpz=impz(b,a,64); % 使用impz函数
subplot(211); stem(rfilter);title('使用filter函数绘制的y(n)-y(n-1)+0.9y(n-2)=x(n)');axis([-5 40 -1.5 1.5]);
subplot(212); stem(rimpz);title('使用impz函数绘制的y(n)-y(n-1)+0.9y(n-2)=x(n)');axis([-5 40 -1.5 1.5]);
%h=get(gca,'position'); %将子图横坐标范围扩为原来的3倍
%h(2)=3*h(2);
%set(gca,'position',h);
有问题请在评论区留言或者是私信我,一天8h在线。