写下面的MATLAB程序:描述LTI离散系统的差分方程如下,绘出该系统在0~50单位时间范围内单位脉冲响应的波形,绘制输入为x(n)=u(n -3)时的系统响应,并求出其数值解。 2y(n) - 2y(n-1) + y(n-2) = f(n) + 3f(n-1) + 2f(n-2)。
时间: 2023-12-24 11:04:29 浏览: 125
基于微分方程解法的MATLAB函数实现离散LTI系统响应.pdf
下面是MATLAB程序的代码:
```matlab
% 定义差分方程的系数
a = [2, -2, 1];
b = [1, 3, 2];
% 计算该系统在0~50单位时间范围内单位脉冲响应的波形
impulse_response = impz(b, a, 50);
stem(impulse_response);
xlabel('Time (samples)');
ylabel('Amplitude');
title('Impulse response of the system');
% 计算输入为x(n)=u(n-3)时的系统响应
n = 0:50;
x = [zeros(1, 3), ones(1, 48)];
y = filter(b, a, x);
stem(n, y);
xlabel('Time (samples)');
ylabel('Amplitude');
title('System response to x(n)=u(n-3)');
% 求解输入为x(n)=u(n-3)时的系统响应的数值解
y_numerical = zeros(length(n), 1);
for i = 3:length(n)
y_numerical(i) = (1/b(1))*(b(2)*y_numerical(i-1) + b(3)*y_numerical(i-2) + ...
a(2)*x(i-1) + a(3)*x(i-2));
end
figure();
stem(n, y_numerical);
xlabel('Time (samples)');
ylabel('Amplitude');
title('Numerical solution of system response to x(n)=u(n-3)');
```
程序首先定义了差分方程的系数,然后使用`impz`函数计算该系统在0~50单位时间范围内单位脉冲响应的波形,并使用`stem`函数绘制波形图像。
接着,程序生成了输入为$x(n)=u(n-3)$的序列$x$,并使用`filter`函数计算该系统对输入信号的响应,并使用`stem`函数绘制响应的波形图像。
最后,程序使用循环计算了输入为$x(n)=u(n-3)$时系统响应的数值解,并使用`stem`函数绘制数值解的波形图像。
阅读全文