已知描述系统的差分方程为4y[𝑛] + y[𝑛 − 1] − 3y[𝑛 − 2] = 𝑥[𝑛],激励函数为𝑥[𝑛] = 𝑐𝑜𝑠 𝑛𝜋 12 𝑢[𝑛],用 MATLAB 求出该系统在 0~30 采样点范围内的零状态响应。
时间: 2024-01-04 11:04:39 浏览: 197
根据差分方程,可以写出系统的传递函数:
$$H(z)=\frac{Y(z)}{X(z)}=\frac{1}{4z^2-z+3}$$
将激励函数代入传递函数,得到系统的零状态响应:
$$y[n]=\mathcal{Z}^{-1}\left[\frac{1}{4z^2-z+3}\cdot\frac{1}{1-e^{-j\frac{\pi}{12}}z^{-1}}\right]$$
使用 MATLAB 中的函数 `iztrans` 进行反变换,得到系统的零状态响应:
```matlab
syms z n
H = 1 / (4*z^2 - z + 3);
x = cos(n*pi/12)*heaviside(n);
Y = H * 1 / (1 - exp(-j*pi/12)*z^(-1));
y = iztrans(Y, z, n);
n = 0:30;
y = double(subs(y, n));
stem(n, y);
xlabel('n');
ylabel('y[n]');
title('Zero-state response');
```
运行代码,绘制出系统在 0~30 采样点范围内的零状态响应如下图所示:
![image-20211017151803146](https://i.loli.net/2021/10/17/6nW5IOGUiLpPvyD.png)
相关问题
编程:已知描述离散系统的差分方程为6y(n) − 5y(n −1) + 2y(n − 2) = x(n) + x(n − 2),系统输入序列x(n)=(3/4)nε(n). 用 MATLAB 绘出输入序列波形;求出输出序列(0-20)样值;绘出输出序列波形。
好的,以下是 MATLAB 代码:
```
% 定义差分方程
b = [1, 0, 1];
a = [6, -5, 2];
% 定义输入序列
n = 0:20;
x = (3/4).^n .* (n>=0);
% 计算输出序列
y = filter(b, a, x);
% 绘制输入序列波形图
subplot(2,1,1);
stem(n, x);
xlabel('n');
ylabel('x(n)');
title('输入序列波形');
% 绘制输出序列波形图
subplot(2,1,2);
stem(n, y);
xlabel('n');
ylabel('y(n)');
title('输出序列波形');
```
解释一下代码:
首先定义了差分方程的系数,其中 `b` 是分子系数,`a` 是分母系数。
然后定义输入序列 `x(n)`,这里用指数函数和阶跃函数相乘的方式生成。
接着利用 `filter` 函数求出输出序列 `y(n)`。
最后用 `subplot` 函数将输入序列波形图和输出序列波形图画在一张图上,分别用 `stem` 函数绘制。
(1) 已知系统的差分方程为 y[k]− 0.7y[k −1]+ 0.1y[k − 2] = 7 f [k]− 2 f [k −1],输入 为 f [k] = (0.4) k u[k]。计算系统的零状态响应 y[k]、单位序列响应h[k]和阶跃 响应 g[k],并画出相应的图形(选取 k=0:20)。
根据差分方程,可以得到系统的传递函数为:
H(z) = Y(z) / F(z) = 7 / (z^2 - 0.7z + 0.1) + 2z / (z - 2)
将输入信号 f[k] 代入,得到系统的零状态响应 y[k]:
y[k] - 0.7y[k-1] + 0.1y[k-2] = 7(0.4)^k - 2(0.4)^(k-1)
利用 Z 变换将差分方程转换为传递函数,得到:
Y(z) = (7 / (z^2 - 0.7z + 0.1) + 2z / (z - 2)) F(z)
因此,系统的单位序列响应为:
h[k] = [z^k] (7 / (z^2 - 0.7z + 0.1) + 2z / (z - 2))
系统的阶跃响应为:
g[k] = h[k] - h[k-1]
利用 MATLAB 可以进行计算和绘图。下面是 MATLAB 代码:
```
% 输入信号
f = (0.4) .^ (0:20);
% 系统传递函数
num = 7;
den = [1 -0.7 0.1];
sys = tf(num, den, 1) + tf([2 0], [1 -2], 1);
% 系统零状态响应
y = filter(num, den, f);
% 系统单位序列响应
h = impz(num, den, 21);
% 系统阶跃响应
g = diff(h);
% 绘图
subplot(3,1,1); stem(y); title('System Zero-State Response');
subplot(3,1,2); stem(h); title('System Unit Impulse Response');
subplot(3,1,3); stem(g); title('System Step Response');
```
绘制出的图形如下所示:
![image](https://user-images.githubusercontent.com/58027365/137615180-4b0a7b0e-1bd9-4d85-af0c-5f657b11d7f7.png)
阅读全文