实验七 状态空间表达与求解的Matlab实现
1、 实验目的
了解和熟悉Matlab关于矩阵运算和状态空间表达及相关运算的常用命令和使用方法,以便在学习过程中能有效地应用Matlab这个工具解决复杂系统的相关设计运算工作。
2、 实验
(1)熟悉并使用以下常用的矩阵运算命令及运算符:
det; eig; rank; inv; diag(v)和diag(v,k); poly; poly2sym
exp(A)和expm(A)
A^n; A./B ; A.*B; A\B; A\B; A.’; A’;(注:A,B均指任意矩阵)
(2)熟悉系统的状态空间表达的Matlab实现方法(SS函数与tf函数的应用和相互转换),并将相应的状态模型在Simulink中表达成模拟结构图。
(3)利用实验(1)中的相关命令练习将一般的状态空间模型转换为约旦(Jordan)
型;直接应用函数Jordan(A)求解状态空间的转换矩阵。
(4)利用符号变量和前述的相关函数计算状态方程的非齐次解,解题思路如下:
若某系统的状态方程为:
,求系统在单位阶跃作用下的状态响应解,设初始状态为
,输入量为:
,应用Matlab的求解过程为:
Syms t s
Exp1=expm(A*t)*x0;
Exp2=int(expm(a*(t-s))*B*u,s,0,t);
最后的总解:
X=Exp1+Exp2;
(5) 若只需知道已知系统各状态量随时间的响应曲线,则可以直接应用Simulink进行仿真,也可以通过直接建立SS模型,再利用系统响应函数(如:step,initial,lsim)获取状态响应值(曲线),后者代码可如下操作:已知系统为:
,
G=ss(A,B,C,D); [y,t,x]=lsim(G,u,t); //求任意输入响应,注:A,B,C,D,u,t等应先赋值
G=ss(A,B,C,D); [y,t,x]=step(G,t); //阶跃响应
G=ss(A,B,C,D); [y,t,x]=initial(G,x0,t); //零输入响应,x0为初始状态
plot(t,x) //画出状态响应曲线
实验
(七)
——状态空间表达于求解的Matlab实现
班级 自动化92 姓名 杨孝凌 学号32209209
一、 已知系统的状态空间表达为:
,
试用Matlab求出系统单位阶跃下的状态解,写出实现过程的相应代码。
A=[0 -2;1 -3];B=[2;0];C=[2 0];D=[0];x0=[1;1];
G=ss(A,B,C,D);[y,t,x]=step(G);
plot(t,x)
syms t s
exp1=expm(A*t)*x0;
exp2=int(expm(A*(t-s))*B*u,s,0,t);
X=exp1+exp2
二、应用Matlab画出述系统在输入为
时的状态响应曲线(0-5秒),并写下相应的实现代码
A=[0 -2;1 -3];B=[2;0];C=[2,0];D=[0];
t=[0:.04:5];u=1+exp(-t).*cos(5*t);G=ss(A,B,C,D);[y,t,x]=lsim(G,u,t);
plot(t,x)
实验八 系统能控与能观性Matlab仿真
1、 实验目的
了解和熟悉Matlab关于系统能控性和能观性的常用命令和使用方法,同时通过典型系统的仿真分析更加直观和形象地了解能控性和能观性的本质内涵,巩固理论知识。
2、 实验内容
(1) 熟悉和掌握ctrb和obsv两命令的使用方法
(2) 能控型系统分析:对于给定的能控型系统:
找出一种控制作用,在给定的时间内使系统的各初始状态达到零态(可以用格莱姆矩阵构造控制作用),并在Simulink中直观显示。
(3) 系统能观性分析:考虑下列系统系统并进行相关分析
判断系统的能观性;
当输入为零时,求出系统的输出响应的表达式(初始状态不为零)
根据输出响应分析通过对输出值的分析可以获取系统初始状态的哪些信息?
当初始状态满足什么条件时,可以从输出端的值直接获取初始状态的所有信息?
选取有代表性的初始状态,在Simulink中进行仿真,在仿真图中,利用输出端的值(结合输出响应的表达式)用
模块显示可以观测到的状态信息。
实验报告(八)
——系统能控和能观性Matlab仿真
班级 自动化92 姓名 杨孝凌 学号32209209
一、 完成实验内容(2)中的相关要求,并给出相关说明和主要实现代码
A=[1 2 1;0 1 0;1 0 3];B=[1 0;0 1;0 0];n=3;
Ct=ctrb(A,B);
Roam=rank(Ct)
Roam=3=n所以系统能控。
A=[1 2 1;0 1 0;1 0 3];B=[1 0;0 1;0 0];
x0=[1;1];
syms t;
exp1=expm(-A*t)*B;
exp2=exp1';
Wc=int(exp1*exp2);
u=-B'*expm(-A*t)*(Wc')*[1;1;1]
Sumlink结构图为:
二、 完成实验内容(3)中的相关要求,并给出相关说明和主要实现代码
(1)系统的能观性判断:
A=[-2 1;1 -2]; B=[1;0];C=[1,-1];n=2;
Ob=obsv(A,C);
Roam=rank(Ob)
Roam=1
步骤
设计要求:
(1)用Matlab中的state-space 模块
来仿真实际系统,即实际系统内部信息是无法获取的,能利用的只能是输入和输出量。
(2)在Simulink中采用模拟结构图的形式来体现所设计的状态观测器。
设计步骤:
(1) 先从理论上分析设计观测器输出反馈矩阵和状态反馈矩阵的值。
(2) 用Simulink搭建满足设计要求的仿真图。
(3) 将state-space 模块中的状态量初始值和观测器中状态的初始值设置为不同的值,
state-space 模块的输出值和观测器的输出值。
实验报告(九)
——状态观测器设计及Matlab仿真
班级 自动化92 姓名 杨孝凌 学号32209209
一、 写出系统的状态空间表达,求出系统的状态反馈矩阵和观测器的输出反馈矩阵
系统的状态空间表达式为:
对系统的能观性进行判断,因为
为满秩,所以系统可观
系统的状态反馈矩阵
ans =
-20 20
-6 2
对观测器分析由系统的输出满足以下设计要求:
。
求输出观测矩阵:
a=[-20 20;-1 0];
b=[0 1]';
c=[1 0];
P=[-20+17.92*j -20+17.92*j];
k=acker(a,b,P)
a-b*k
a1=a';
b1=c'
k1=acker(a1,b1,P);
h=(k1)'
a-h*c
ahc=[a -b*k;h*c a-h*c-b*k]
ans =
-20.0000 20.0000
16.0563 -20.0000
观测器的输出反馈矩阵为
ahc =
-20.0000 20.0000 0 0
-1.0000 0 17.0563 -20.0000
20.0000 0 -40.0000 20.0000
2.9437 0 13.1126 -20.0000
一、 给出系统的Simulink仿真结构图
二、 说明系统state-space 模块中的状态量初始值和观测器中状态的初始值,并给出state-space 模块的输出值和观测器的输出值的阶跃响应曲线。
图1输出值的阶跃相应曲线
图2观测器的输出值的阶跃响应曲线