编写MATLAB程序,已知离散线性时不变系统的系统函数,分别用impz函数和dstep函数求解系统的冲激响应和阶跃响应。 (1.) x(n)+x(n-6)=y(n) (2). 2y(n)-3y(n-1)+y(n-2)=x(n-1)利用完整代码来实现
时间: 2024-11-23 10:41:22 浏览: 1
matlab.rar_impz 函数_impz在MATLAB中_matlab impz_matlab冲激串_冲激响应
5星 · 资源好评率100%
在MATLAB中,我们可以使用`impz`函数来计算系统函数对应的零极点图(ZPK),然后通过逆Z变换得到系统的冲激响应(Impulse Response)。而`dstep`函数则可以直接用来计算阶跃响应。这里我们先定义两个一阶和六阶的线性递归系统,然后逐个编写代码。
对于第一个系统:
```matlab
% 定义系统函数
sys1 = zpk([], , [-1, 0]); % 系统为 x(n) + x(n-6) = y(n)
% 使用impz计算零极点图
[num1, den1] = zplane(sys1);
figure; % 显示系统函数的ZPK图
% 冲击响应
h1 = impz(num1, den1); % 冲激响应为零输入响应
n = 0:60; % 观察时间范围
x_impulse = zeros(size(n)); % 初始化冲激响应向量
x_impulse(1) = 1; % 第1步冲击
x_response1 = conv(x_impulse, h1); % 卷积计算响应
% 阶跃响应
u_step = ones(size(n)); % 阶跃信号
y_step1 = lsim(sys1, u_step, n); % 使用lsim函数直接计算阶跃响应
```
对于第二个系统:
```matlab
% 定义第二个系统函数
sys2 = zpk([-3 2], , [1, -1]); % 系统为 2y(n) - 3y(n-1) + y(n-2) = x(n-1)
% 同样步骤计算ZPK、冲激响应和阶跃响应
[num2, den2] = zplane(sys2);
h2 = impz(num2, den2);
x_impulse2 = zeros(size(n));
x_impulse2(1) = 1;
x_response2 = conv(x_impulse2, h2);
u_step = ones(size(n));
y_step2 = lsim(sys2, u_step, n);
```
阅读全文