一下问题结合matlab回答:系统列出差分方程为y(n)-0.2y(n-1)-cy(n-2)=x(n)+0.01x(n-1),n<10时参数c=0.1,x(n)=u(n);n>=10时,x(n)=-u(n),c=0.5,求输出y(n),0<=n<=20;用MATLAB命令,分别用三种不同方法:直接用数值法、用conv和filter两种卷积法,求差分方程2y(n)-y(n-1)-3y(n-2)=2x(n)-x(n-1),x(n)=((0.5)^n)*u(n)所描述离散时间系统的零状态响应,并绘图比较;系统包括两个级联的线性时不变系统,它们的单位样值响应分别为h1(n)和h2(n)。已知h1(n)=u(n)-u(n-2),激励x(n)=δ(n)-δ(n-3)时,输出y(n)=5*{[1-(0.8)^(n+1)]u(n)-[1-(0.8)^(n-1)]u(n-2)-[1-(0.8)^(n-2)]u(n-3)+[1-(0.8)^(n-4)]u(n-5)},试用MATLAB画出h2(n)。
时间: 2023-11-16 14:06:53 浏览: 59
对于第一个问题,使用MATLAB可以按照以下步骤求解:
1. 定义差分方程:
```matlab
syms y(n) y1 y2 x(n) c;
y(n) - 0.2*y(n-1) - c*y(n-2) == x(n) + 0.01*x(n-1)
```
2. 求解差分方程的通解:
```matlab
eqn = y(n) - 0.2*y(n-1) - c*y(n-2) == x(n) + 0.01*x(n-1);
ySol(n) = dsolve(eqn);
```
3. 求解特定时刻的输出:
```matlab
% n<10时
c = 0.1;
x(n) = heaviside(n);
y1 = subs(ySol, n, 0:9);
y1 = double(y1);
% n>=10时
c = 0.5;
x(n) = -heaviside(n);
y2 = subs(ySol, n, 10:20);
y2 = double(y2);
% 合并输出
y = [y1, y2];
```
4. 分别使用数值法、卷积法求解差分方程2y(n)-y(n-1)-3y(n-2)=2x(n)-x(n-1),x(n)=((0.5)^n)*u(n)的零状态响应,并绘图比较:
```matlab
% 定义差分方程
syms y(n) x(n);
y(n) - y(n-1)/2 - 3*y(n-2) == 2*x(n) - x(n-1);
x(n) = (0.5)^n * heaviside(n);
% 直接用数值法求解
y1 = dsolve(y(n) - y(n-1)/2 - 3*y(n-2) == 0, y(0) == 1, y(-1) == 0, y(-2) == 0);
y1 = subs(y1, n, 0:20);
y1 = double(y1);
% 用conv卷积法求解
h = [2, -1/2, -3];
x1 = subs(x, n, 0:20);
y2 = conv(x1, h, 'same');
% 用filter卷积法求解
a = [1, -1/2, -3/2];
b = [2, -1];
y3 = filter(b, a, x1);
% 绘图比较
n = 0:20;
subplot(2,2,1);
stem(n, y1);
title('直接用数值法');
subplot(2,2,2);
stem(n, y2);
title('用conv卷积法');
subplot(2,2,3);
stem(n, y3);
title('用filter卷积法');
```
5. 画出h2(n):
```matlab
% 定义差分方程
syms y(n) x(n);
h1(n) = heaviside(n) - heaviside(n-2);
x(n) = dirac(n) - dirac(n-3);
y(n) == 5*(1-(0.8)^(n+1))*heaviside(n) - 5*(1-(0.8)^(n-1))*heaviside(n-2) - 5*(1-(0.8)^(n-2))*heaviside(n-3) + 5*(1-(0.8)^(n-4))*heaviside(n-5);
% 求解h2(n)
eqn = conv(h1, y) == 0;
h2 = solve(eqn, h2);
h2 = simplify(h2);
% 绘图
n = 0:10;
h2_n = subs(h2, n);
stem(n, h2_n);
```