使用matlab完成已知一个二阶线性常系数差分方程用下式表示: y(n)+a1y(n-1)+a2y(n-2)= b0x(n)+b1x(n-1)+b2x(n-2), 要求: (1)参数a1、a2、b0、b1、b2由运行时输入; (2)求出该系统的单位冲激响应; 输入序列x(n)=2*3^nu(n),采用两种方法求出该系统的响应,并分别画出时域 波形图;
时间: 2023-12-24 16:04:15 浏览: 65
好的,我可以为您提供一些指导。
首先,您需要编写一个matlab程序来求解这个二阶线性常系数差分方程。程序的基本思路如下:
1. 读入输入参数 a1、a2、b0、b1、b2。
2. 计算差分方程的单位冲激响应,这可以通过设 x(n) = δ(n)和 y(n)=h(n)得到噪声输入对应的输出。代入差分方程中,可得到该系统的单位冲激响应 h(n)。
3. 计算输入序列 x(n) 的响应 y(n),这可以通过直接代入差分方程中,使用递推公式来求解。
4. 画出时域波形图。
下面是一个简单的matlab程序实现以上步骤:
```
% 读入参数
a1 = input('请输入参数a1:');
a2 = input('请输入参数a2:');
b0 = input('请输入参数b0:');
b1 = input('请输入参数b1:');
b2 = input('请输入参数b2:');
% 计算单位冲激响应
h = [1, -a1, -a2];
x = [1, zeros(1, length(h)-1)];
y = filter(b0*[1, zeros(1, length(h)-1)], [1, -a1, -a2], x);
h = y(1:length(h)); % 取出前三个值作为单位冲激响应
% 计算输入序列的响应
n = 0:20;
x = 2*3.^n;
y = filter(b0*[1, zeros(1, length(h)-1)], [1, -a1, -a2], 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('输出序列');
```
这个程序首先读入输入参数 a1、a2、b0、b1、b2。然后,它计算出差分方程的单位冲激响应 h(n),通过输入序列 x(n) 和差分方程,求出输出序列 y(n)。最后,使用 matlab 中的 stem 函数画出输入序列和输出序列的时域波形图。
希望这个程序能够对您有所帮助。如果您有任何问题,欢迎随时向我提问。
阅读全文