使用matlab完成已知一个二阶线性常系数差分方程用下式表示: y(n)+a1y(n-1)+a2y(n-2)= b0x(n)+b1x(n-1)+b2x(n-2), 要求: (1)参数a1、a2、b0、b1、b2由运行时输入; (2)求出该系统的单位冲激响应; (3)已知输入序列,采用两种方法求出该系统的响应,并分别画出时域 波形图;
时间: 2023-12-25 09:02:36 浏览: 129
好的,让我来回答你的问题。
首先,关于你使用 Matlab 完成二阶线性常系数差分方程的问题,可以使用以下代码:
```matlab
% 输入参数
a1 = input('请输入 a1:');
a2 = input('请输入 a2:');
b0 = input('请输入 b0:');
b1 = input('请输入 b1:');
b2 = input('请输入 b2:');
% 定义差分方程
num = [b0 b1 b2];
den = [1 a1 a2];
sys = tf(num, den, 1);
% 求单位冲激响应
t = 0:0.1:20;
impulse(sys, t);
% 求系统响应并绘制时域波形图(方法一)
x = randn(1, 100);
y1 = filter(num, den, x);
t1 = 0:99;
figure;
stem(t1, y1);
% 求系统响应并绘制时域波形图(方法二)
y2 = zeros(1, 100);
for n = 3:100
y2(n) = -a1*y2(n-1) - a2*y2(n-2) + b0*x(n) + b1*x(n-1) + b2*x(n-2);
end
t2 = 0:99;
figure;
stem(t2, y2);
```
这段代码中,首先用 `input` 函数让用户输入差分方程的系数,然后使用 `tf` 函数生成系统的传递函数,进而使用 `impulse` 函数求出系统的单位冲激响应并绘制其时域波形图。接着,使用两种方法求出系统的响应,一种是使用 `filter` 函数,另一种是使用循环计算,最后分别绘制出时域波形图。
希望这个回答能够解决你的问题!
阅读全文