编写MATLAB程序计算y(n)+0.2y(n-1)-0.24y(n-2)=x(n)+x(n-1)的系统函数
时间: 2023-11-28 16:06:19 浏览: 50
可以先将差分方程转化为传递函数的形式,即:
$$H(z) = \frac{Y(z)}{X(z)} = \frac{1+z^{-1}}{1-0.2z^{-1}+0.24z^{-2}}$$
然后使用MATLAB中的`tf`函数将分子和分母系数输入,即可得到系统函数:
```matlab
b = [1 1];
a = [1 -0.2 0.24];
H = tf(b, a, 1);
```
其中`1`表示采样周期为1,如果采样周期不为1,则需要根据实际情况调整。
相关问题
编写MATLAB函数,已知差分方程y(n)+0.2y(n-1)-0.24y(n-2)=x(n)+x(n-1),求系统函数
根据差分方程,可以将其转化为系统函数的形式,具体步骤如下:
1. 将差分方程的右侧写成Z变换形式:
X(z) + z^(-1)X(z)
2. 将差分方程的左侧写成Z变换形式:
Y(z) + 0.2z^(-1)Y(z) - 0.24z^(-2)Y(z)
3. 将上述两个式子相除,得到系统函数H(z):
H(z) = (Y(z) + 0.2z^(-1)Y(z) - 0.24z^(-2)Y(z)) / (X(z) + z^(-1)X(z))
4. 化简上述式子,得到系统函数的表达式:
H(z) = (1 + 0.2z^(-1) - 0.24z^(-2)) / (1 + z^(-1))
编写MATLAB函数的代码如下:
```matlab
function H = systemFunction()
syms z;
H(z) = (1 + 0.2*z^(-1) - 0.24*z^(-2)) / (1 + z^(-1));
end
```
在MATLAB命令窗口中,输入该函数名,即可得到系统函数的表达式。
(1) y(n) + 0.2y(n-1) - 0.24y(n-2) = x(n) + x(n-1)1试用MATLAB命令中的filter函数求出并画出 为单位阶跃序列时系统的零状态响应;
根据系统的差分方程,可以得到系统的传递函数:
H(z) = Y(z) / X(z) = 1 / (1 + 0.2z^-1 - 0.24z^-2)
利用 `filter` 函数求出单位阶跃序列的响应,代码如下:
b = 1; % 分子系数
a = [1, 0.2, -0.24]; % 分母系数
u = ones(1, 100); % 输入序列为单位阶跃序列
y = filter(b, a, u); % 求出输出序列
接下来,利用 `impz` 函数求出系统的单位脉冲响应:
h = impz(b, a);
然后,利用 `filter` 函数求出系统的零状态响应:
n = length(u);
zi = filter(b, a, [u(1) zeros(1, n-1)]); % 初始状态为0
zs = filter(b, a, u, zi); % 计算零状态响应
最后,绘制单位阶跃输入、零状态响应和单位脉冲响应的图像:
stem(0:n-1, y, 'b'); % 绘制单位阶跃输入的图像
hold on;
stem(0:n-1, zs, 'r'); % 绘制零状态响应的图像
stem(0:length(h)-1, h, 'g--'); % 绘制单位脉冲响应的图像
legend('单位阶跃输入', '零状态响应', '单位脉冲响应');
图像如下所示:
![零状态响应](https://img-blog.csdn.net/20180428171107265?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2hpdEdQVA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
可以看出,零状态响应与单位阶跃输入的响应基本一致,符合预期。