A=[-1.6 -0.9 0 0;0.9 0 0 0;0.4 0.5 -5.0 -2.45;0 0 2.45 0],B=[1;0;1;0],C=[1 1 1 1]由此状态方程求单位阶跃响应MATLAB程序,单位冲激响应matlab程序,零输入响应matlab程序
时间: 2024-03-06 09:46:30 浏览: 121
好的,根据您提供的状态空间模型,以下是分别求解系统的单位阶跃响应、单位冲激响应和零输入响应的 MATLAB 代码:
1. 单位阶跃响应 MATLAB 程序:
```matlab
% 定义状态空间模型
A = [-1.6 -0.9 0 0; 0.9 0 0 0; 0.4 0.5 -5.0 -2.45; 0 0 2.45 0];
B = [1; 0; 1; 0];
C = [1 1 1 1];
D = 0;
sys = ss(A, B, C, D);
% 计算单位阶跃响应
t = 0:0.01:10; % 时间范围
u = ones(size(t)); % 单位阶跃信号
[y, t] = lsim(sys, u, t);
plot(t, y);
xlabel('Time (s)');
ylabel('Response');
title('Step Response');
```
其中,lsim 函数用于求解系统的响应,u 向量用于定义单位阶跃信号。上述代码中,可以通过修改 t 向量的范围来调整计算时间。
2. 单位冲激响应 MATLAB 程序:
```matlab
% 定义状态空间模型
A = [-1.6 -0.9 0 0; 0.9 0 0 0; 0.4 0.5 -5.0 -2.45; 0 0 2.45 0];
B = [1; 0; 1; 0];
C = [1 1 1 1];
D = 0;
sys = ss(A, B, C, D);
% 计算单位冲激响应
t = 0:0.01:10; % 时间范围
u = zeros(size(t)); % 零输入信号
u(1) = 1; % 单位冲激信号
[y, t] = lsim(sys, u, t);
plot(t, y);
xlabel('Time (s)');
ylabel('Response');
title('Impulse Response');
```
其中,u 向量用于定义单位冲激信号。上述代码中,可以通过修改 t 向量的范围来调整计算时间。
3. 零输入响应 MATLAB 程序:
```matlab
% 定义状态空间模型
A = [-1.6 -0.9 0 0; 0.9 0 0 0; 0.4 0.5 -5.0 -2.45; 0 0 2.45 0];
B = [1; 0; 1; 0];
C = [1 1 1 1];
D = 0;
sys = ss(A, B, C, D);
% 计算零输入响应
t = 0:0.01:10; % 时间范围
x0 = [0.1; -0.2; 0.3; -0.4]; % 初始状态向量
[y, t, x] = initial(sys, x0, t);
plot(t, y);
xlabel('Time (s)');
ylabel('Response');
title('Zero Input Response');
```
其中,initial 函数用于求解零输入响应,x0 向量用于定义初始状态向量。上述代码中,可以通过修改 t 向量的范围来调整计算时间。
希望这些 MATLAB 代码对您有所帮助!
阅读全文