Matlab判断能控性、能观性、稳定性,并绘制开环状态响应曲线

question:

状态反馈控制器的设计
一、实验目的
1.加强对现代控制理论相关知识的理解;
2.掌握Matlab进行控制系统模型分析与控制器设计。
二、实验环境
1.Matlab仿真软件
三、实验内容
考虑某一阶倒立摆系统,其状态空间模型如下:
A=[0 1 0 0;0 0 -1 0;0 0 0 10;0 0 10/3 0];
B=[0;0.1;0;-1/30];
C=eye(4);
D=zeros(0);
1) 判断系统的能控性、能观性、稳定性,画出系统初始状态为x0=[1;-0.3;0.2;-0.5]的开环状态响应曲线。
2)求将极点配置为[-5+j;-5-j;-8+j;-8-j]的状态反馈控制器K,并画出初始状态为x0=[1;-0.3;0.2;-0.5]的闭环控制系统状态响应曲线。

%首先定义出系统的有关信息矩阵
A=[0 1 0 0;0 0 -1 0;0 0 0 10;0 0 10/3 0];
B=[0;0.1;0;-1/30];
C=eye(4);
D=zeros(0);

%第一个,对系统稳定性进行判定
e=eig(A);                   %eig(A)旨在返回一个列向量,其中包含方阵 A 的特征值。
i=all(real(e) < 0);         %根据书上所言: “线性定常系统的平衡状态Xe=0渐近稳定的充要条件是矩阵A的所有特征值均具有负实部。%
if i==1
  disp("系统稳定");          %disp(X) 显示变量 X 的值,而不打印变量名称。
else
  disp("系统不稳定");
end

%第二个,判断系统的能控性。
M=rank(ctrb(A,B));          %M表示能控判别矩阵
l= M==4;                    %判断M是否满秩,若满秩则稳定,借助变量l的真值0、1来体现。
if l==1
   disp('系统能控');
else
   disp('系统不能控')
end

%第三个,判断系统的能观性
N=rank(obsv(A,C));
observation = N==4;
if observation==1
   disp('系统能观');
else
   disp('系统不能观');
end

下面为绘制系统开环响应的代码:

%系统初始状态
x0 = [1; -0.3; 0.2; -0.5];
%由上面的X0定义,对应有状态X1,X2,X3,X4的初始状态值为1,-0.3,0.2,-0.5。

%模拟出系统的开环响应如下。
t=0:0.01:10;
sys=ss(A,B,C,D);
[y,~,x]=initial(sys,x0,t);

%绘制过程如下。
figure;
subplot(4,1,1);
plot(t,x(:,1),'b');
grid on;

subplot(4, 1, 2);
plot(t, x(:, 2), 'r');
grid on;

subplot(4,1, 3);
plot(t, x(:, 3), 'g');

grid on;

subplot(4, 1, 4);
plot(t, x(:, 4), 'k');


grid on;                   %%grid on的作用是添加网格线。
xlabel('Time');            %%xlabel的作用是:xlabel(txt) 对当前坐标区或独立可视化的 x 轴加标签。


第二题待更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值