实验二利用MATLAB求取线性系统的状态空间模型的解
实验二利用MATLAB求取线性系统的状态空间模型的解
现代控制理论第一次上机实验报告 实验二 利用MATLAB 求取线性系统的状态空间模型的解实验目的:1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;2、通过编程、上机调试,掌握系统运动的分析方法。
实验原理:一、系统时域响应的求解方法给定系统的状态空间模型:()()()()()()x t Ax t Bu t y t Cx t Du t =+=+ (2.1) 设系统的初始时刻00t =,初始状态为(0)x ,则系统状态方程的解为0()0()(0)()(0)()t At AtA t At A t x t e x e e Bu d e x e Bu d ττττττ--=+=+⎰⎰ (2.2)输出为()0()(0)()()tAt A t y t Ce x C e Bu d Du t τττ-=++⎰ (2.3) 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。
输出()y t 由三部分组成。
第一部分是当外部输入等于零时,由初始状态0()x t 引起的,故为系统的零输入响应;第二部分是当初始状态0()x t 为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。
实验步骤1、构建系统的状态空间模型,采用MA TLAB 的m-文件编程;2、求取系统的状态和输出响应;3、在MA TLAB 界面下调试程序,并检查是否运行正确。
实验要求1、在运行以上程序的基础上,应用MA TLAB 验证一个振动现象可以由以下系统产生:01()10x t x ⎡⎤=⎢⎥-⎣⎦证明该系统的解是cos sin ()(0)sin cos t t x t x t t ⎡⎤=⎢⎥-⎣⎦假设初始条件0(0)1x ⎡⎤=⎢⎥⎣⎦,用Matlab 观察该系统解的形状。
m-程序如下:A=[0 1;-1 0];B=[0;0]; D=B;C=[1 0;0 1];sys=ss(A,B,C,D);x0=[0;1];t=[0:0.01:20];[y,T,x]=lsim(sys,u,t,x0)subplot(2,1,1),plot(T,x(:,1))xlabel('Time(sec)'),ylabel('X_1')subplot(2,1,2),plot(T,x(:,2))xlabel('Time(sec)'),ylabel('X_2')仿真结果如下:仿真分析:由仿真图可知,X1和X2周期相同约为6.2,相位差90度,故X1=sint;X2=cost,得证。
K3.08-利用MATLAB求解系统状态方程
k=0:1:40;
%求全响应
v0=[-10;-4];
%初始状态
X=[1*ones(size(k))]';
%输入阶跃函数
[y,v]=dlsim(A,B,C,D,X,v0);
% 调用函数求解响应
stem(k,y);xlabel('k');ylabel('y');title('全响应');
y
全响应 6
4
2
2
1
2
0
x1(t)
x2
(t
)
10
0
f
(t)
y(t) 1
0
x1 x2
(t) (t)
系统输入为:f (t) t (t)
初始状态:
x1(0)
x2
(0)
5 0
求系统的零输入响应和零状态响应。
2
利用MATLAB求解系统状态方程
解:
%求零输入响应
A=[-2 -2;1 0]; B=[10;0];C=[1 0];D=[0];
1 0
f
(k
)
y(k) 1
1
x1 x2
(k ) (k )
系统输入为:f(k)=ε(k)
初始状态为:
x 1 (0) x2 (0)
10 4
求系统的全响应。
4
解:
利用MATLAB求解系统状态方程
A=[0 1;-1 1.9021];B=[1;0];C=[-1 1];D=[0]; %各系数矩阵
0
-2
-4
-6
-8
0
5 10 15 20 25 30 35 40
k
5
matlab状态空间表达式的解
标题:MATLAB状态空间表达式的解析一、概述MATLAB是一种非常常用的数学软件,用于分析、设计和模拟动态系统。
在控制系统理论中,状态空间表达式是描述线性系统动态行为的重要方法。
本文旨在介绍如何使用MATLAB对状态空间表达式进行解析和分析。
二、状态空间表达式简介状态空间表达式是一种描述线性时不变系统的数学模型。
通常由状态方程和输出方程组成。
状态方程描述了系统的演化规律,而输出方程则描述了系统状态和输出之间的关系。
三、MATLAB中的状态空间表示在MATLAB中,状态空间表示可以使用ss函数进行表达。
该函数的输入参数包括系统的状态方程系数矩阵A、输入矩阵B、输出矩阵C 和前馈矩阵D。
四、求解状态空间表达式1. 稳态响应分析在MATLAB中,可以使用sys = ss(A,B,C,D)定义一个状态空间模型,然后使用step(sys)绘制系统的阶跃响应曲线。
通过阶跃响应曲线可以分析系统的稳态性能。
2. 传递函数表示使用tf(sys)可以将状态空间表示转换为传递函数表示,这样可以更方便地分析系统的特性。
3. 稳定性分析使用eig(A)可以计算状态方程系数矩阵A的特征值,从而判断系统的稳定性。
如果系统的所有特征值都是负实数,那么系统是稳定的。
4. 频域特性分析使用bode(sys)可以绘制系统的频率响应曲线,这样可以分析系统在不同频率下的特性。
五、应用实例以电机控制系统为例,假设系统的状态空间表达式为:A = [-2 -1; 3 -4]B = [1; 0]C = [0 1]D = [0]可以使用以下代码在MATLAB中求解该系统:sys = ss(A,B,C,D)step(sys)tf_sys = tf(sys)eig(A)bode(sys)六、结语本文介绍了MATLAB中状态空间表达式的解析方法,并以电机控制系统为例进行了说明。
希望本文能够帮助读者更好地理解和应用状态空间表达式在MATLAB中的求解方法。
利用MATLAB对状态空间模型进行分析
利用MATLAB对状态空间模型进行分析(一)状态空间模型的引入
状态空间模型是一种概率统计模型,它利用了状态变量和观测变量来描述系统的特性,可以用来模拟复杂的或不可观测的动态过程。
状态空间模型的核心思想是,将动态系统的状态变量和观测变量分别建模,并用一组数学方程表示整个系统。
这样,状态空间模型可以更好地揭示动态系统的特性,从而更好地进行控制和优化。
(二)状态空间模型的形式
状态空间模型由两部分组成:状态转移方程和观测方程。
状态转移方程用于描述系统的状态变量的动态变化,而观测方程则用于表示系统的观测变量的变化趋势。
状态转移方程可以表示为:
x_t = A_tx_{t-1} + B_tu_t + ν_t
其中,x_t表示状态变量的确定值,A_t表示状态转移矩阵,B_t表示输入矩阵,u_t表示输入信号,ν_t表示噪声。
观测方程可以表示为:
y_t = C_tx_t + D_tu_t + ε_t
其中,y_t表示观测变量的确定值,C_t表示观测矩阵,D_t表示输出矩阵,u_t表示输入信号,ε_t表示噪声。
(三)MATLAB绘制状态空间模型
1.为了完成状态空间模型的绘制,首先需要利用MATLAB来定义状态转移方程与观测方程的矩阵参数。
利用 MATLAB 求解系统的状态方程
实验报告实验名称利用 MATLAB 求解系统的状态方程系统的能控性、能观测性分析系专业班学号授课老师预定时间2014-5-28 实验时间实验台号14一、目的要求掌握状态转移矩阵的概念。
学会用 MATLAB求解状态转移矩阵。
掌握求解系统状态方程的方法,学会绘制状态响应曲线;掌握线性系统状态方程解的结构。
学会用 MATLAB 求解线性定常系统的状态响应和输出响应,并绘制相应曲线。
掌握能控性和能观测性的概念。
学会用 MATLAB 判断能控性和能观测性。
掌握系统的结构分解。
学会用 MATLAB 进行结构分解。
掌握最小实现的概念。
学会用 MATLAB 求最小实现。
二、原理简述线性定常连续系统的状态转移矩阵为。
函数 step( ) 可直接求取线性连续系统的单位阶跃响应。
函数 impulse( ) 可直接求取线性系统的单位脉冲响应。
函数 lsim( ) 可直接求取线性系统在任意输入信号作用下的响应。
函数 initial( ) 可求解系统的零输入响应。
n 阶线性定常连续或离散系统状态完全能控的充分必要条件是:能控性矩阵的秩为 n。
线性定常连续或离散系统输出能控的充分必要条件是:矩阵的秩为m。
n 阶线性定常连续或离散系统状态完全能观测的充分必要条件是:能观测性矩阵的秩为 n。
三、仪器设备PC 计算机,MATLAB 软件四、容步骤题2.1A=[0 1;-2 -3];B=[3;0];C=[1 1];D=0;G=ss(A,B,C,D);t=0.5;p=expm(A*t)u1=0;x10=[1;-1];[y1o,t,x1o]=initial(G,x10,t)t2=0:0.5:10;x20=[0;0];u2=ones(size(t2));[y2,t2,x2]=lsim(G,u2,t2);plot(t2,x2,':',t2,y2,'-')t3=0:0.5:10;u3=1+exp(-t3).*cos(3*t3);x30=[0;0];题2.1题2.2G = 0.9709 0.0448 -1.1212 0.7915H = 0.00120.0448。
Matlab问题状态方程的解-文档资料
2021/4/21
6
eAt的数值计算(2/4)
Matlab问题3-1 试在Matlab中计算例3-1中矩阵A在t=0.3时的 矩阵指数eAt的值。
0 1
A
2
3
➢ Matlab程序m3-1如下。
A=[0 1; -2 -3]; t=0.3; eAt=expm(A*t)
➢ Matlab程序m3-1执行结果如下。
A
0
213Fra bibliotek其中t定义为符号变量,输入矩阵A为一般Matlab的数值矩阵,
表达式A*t即为Matlab的符号矩阵。
例3-1的计算结果
➢ Matlab程序m3-2执行结果如下。
eAt
2et 2et
e2t 2e2t
et e2t et 2e2t
eAt = [ 2*exp(-t)-exp(-2*t), -exp(-2*t)+exp(-t)]
2021/4/21
9
eAt的符号计算(1/8)
2. eAt的符号计算
在Matlab中,对给定矩阵A,可通过符号计算工具箱的函数 expm()计算变量t的矩阵指数函数eAt的表达式。 ➢ 在使用Matlab的符号计算工具箱计算时,需要定义符号变 量,输入符号表达式与符号矩阵。 ➢ 下面介绍使用符号计算工具箱需要的基本操作。
eAt = 0.9328 0.1920 -0.3840 0.3568
2021/4/21
7
eAt的数值计算(3/4)
在Matlab中还有3个计算矩阵指数eAt的函数,分别是 expmdemo1(),expmdemo2()和expmdemo3()。 ➢ expmdemo1()就是expm(),采用帕德逼近法计算矩阵指数; ✓ 而expmdemo2()采用3.2.1节中介绍的利用泰勒级数展 开法来计算,精度较低; ✓ expmdemo3()采用3.2.2节中介绍的利用特征值和特征 向量来计算对角线矩阵,进而通过对角线矩阵的矩阵 指数计算原矩阵的矩阵指数。
基于MATLAB控制系统仿真实验报告
tf 4
y0
0 1
6、求出 G1(s)
2 (s2 2s 1) 与 G2 (s)
1 (2s3
3s2
1)
的单位阶跃响应,并分别
求出状态空间模型。
解:(1) G1(s) 2 (s2 2s 1) 的状态空间模型求解如下:
function shiyan2 b1=[2];
D(z)
0.62(1 0.136z 1)(1 0.183z (1 0.045z 1)(1 0.53z 1)
1 )
分别用仿真算法得到系统在单位阶跃输入作用下的响应,系统在单位速度输
入是的输出响应。
解:(1)首先将 W1(s)转换为 W1(z),采样周期 T=0.2s,程序清单如下: function shiyan42 num=[10];den=[0.005 0.15 1 0]; ts=0.2;[nc,dc]=c2dm(num,den,ts)
INTRO(注意:intro 为一个用 MATLAB 语言编写的幻灯片程序,主要演示
常用的 MATLAB 语句运行结果。)
然后,根据现实出来的幻灯片右面按钮进行操作,可按 START——NEXT—
—NEXT 按钮一步步运行,观察。
3、自编程序并完成上机编辑,调试,运行,存盘:
(1)用 MATLAB 命令完成矩阵的各种运算,例如:
5、利用 ode23 或 ode45 求解线性时不变系统微分方程 y(t) Ay(t) ,并绘制出 y(t)
曲线,式中
A
0.5
1
1 0.5
t t0 t 如下: function xdot=fun21(t,x) A=[-0.5 1;-1 -0.5]; xdot=A*x; function fzsy22 t0=0;tf=4;tol=1e-6; x0=[0;1];trace=1; [t,x]=ode23('fun21',t0,tf,x0,tol,trace); plot(t,x) 得到的实验结果如下图所示:
matlab解状态方程
Matlab解状态方程详解
一、引言
状态方程是描述系统动态行为的重要工具,广泛应用于控制工程、电子工程、机械工程等领域。
在Matlab中,可以使用各种方法来解状态方程,包括直接法、迭代法和优化法等。
本文将详细介绍Matlab解状态方程的几种常用方法,并给出相应的示例代码。
二、直接法
直接法是解状态方程最简单的方法之一。
对于简单的一阶或二阶线性时不变系统,可以通过简单的代数运算得到状态变量的解。
对于更复杂的多阶非线性系统,可能需要使用数值方法进行求解。
在Matlab中,可以使用以下代码实现直接法:
三、迭代法
迭代法是一种通过不断迭代来逼近状态变量解的方法。
常用的迭代法包括欧拉法、龙格-库塔法和雅可比迭代法等。
在Matlab中,可以使用以下代码实现欧拉法:
四、优化法
优化法是一种通过最小化某个代价函数来求解状态方程的方法。
常用的优化法包括梯度下降法、牛顿法和拟牛顿法等。
在Matlab中,可以使用以下代码实现梯度下降法:。
用MATLAB分析状态状态空间模型
a =
x1 x2 x3
x1 -6 -1.375 -0.09375
x2 8 0 0
x3 0 8 0
b =
u1
x1 0.25
x2 0
x3 0
c =
x1 x2 x3
y1 0 0 0.375
d =
u1
y1 0
(3)将给定传递函数转换为对角标准型或约当标准型。再将得到的对角标准型或约当
标准型用函数tf( )转换为传递函数,并与原传递函数进行比较。
(3)A=[0 1 0 0;0 -1 1 0;0 0 -1 1;0 0 0 -3];B=[0 0 0 2]';C=[2 0 0 0];D=0;
sys=ss(A,B,C,D);[V,J]=jordan(A);sys1=ss2ss(sys,inv(V))
x2 0 -1 10
x3 0 0 -1 1
x4 0 0 0 -3
b =
u1
x1 0
x2 0
x3 0
x4 2
c =
x1 x2 x3 x4
y1 2 0 0 0
d =
u1
y1 0
Gtf=tf(Gss)
Transfer function:
4
-------------------------
s^4 + 5 s^3 + 7 s^2 + 3 s
(2)用ss2ss函数进行相似变换将其转换为对角标准型。
>> A=[-6 -1.375 -0.09375;8 0 0;0 8 0];B=[0.25 0 0]';C=[0 0 0.375];D=0;
matlab第4章
行向量元素为按降幂排列的多项式系数。
1.多项式乘法函数 conv ( )
格式:C= conv (A, B) %求多项式A和B的乘积
A、B是两个多项式的系数向量,按降幂排列。 conv( ) 把两个多项式相乘合并成一个多项式。
2
p1 2s 3;
2
p2 s 2 4
3 2
A (2s 3)(s 4) 2s 3s 8s 12
x:操作点处的状态向量
u:操作点处的输入向量
x,u缺省值为0。
20
( s 1)(s 2 2s 6) 2 【例4.4】 求传递函数 G(s) 2 s (s 3)(s 3 2s 2 3s 4)
的分子和分母多项式,并求传递函数的特征 根。
21
% num 分子多项式 % conv( ) 采用嵌套形式
G (s)
5s 3 s 3 6 s 2 11s 6
13
3.部分分式展开函数residue ( ) 功能:对两个多项式的比进行部分展开。 格式:[r, p, k]=residue(b, a) 求B(s)/A(s)的部分分式展开式 向量b和a是按s降幂排列的多项式系数。
14
B( s) bn s n bn1s n1 ...b0 F ( s) A( s) an s n an1s n1 ...a0
38
2.并联 G(s)=G1(s)+G2(s) 模型并联函数 parallel 格式:[num, den]=parallel(num1, den1, num2, den2) num1, den1:G1(s) 的分子、分母多项式 num2, den2:G2(s)的分子、分母多项式 num, den:G(s) 的分子、分母多项式
matlab根据传递函数矩阵求状态空间方程
MATLAB根据传递函数矩阵求状态空间方程在探讨MATLAB如何根据传递函数矩阵求状态空间方程之前,首先需要了解传递函数和状态空间方程的概念。
传递函数是描述线性时不变系统输入与输出之间关系的数学方法,通常用于描述信号处理、控制系统等领域中的系统行为。
而状态空间方程则是另一种描述系统动态行为的方法,它能够全面描述系统的状态随时间的变化。
在工程领域中,状态空间方程常常用于分析系统的稳定性、控制系统的设计等问题。
在MATLAB中,我们可以利用控制工具箱提供的函数来求解传递函数矩阵对应的状态空间方程。
我们需要用tf函数将传递函数表示为MATLAB中的传递函数对象,然后利用ss函数将传递函数对象转化为状态空间对象,从而得到对应的状态空间方程。
接下来,我们以一个具体的例子来演示MATLAB如何根据传递函数矩阵求状态空间方程。
假设有如下传递函数矩阵:\[ G(s) = \begin{bmatrix} \frac{2s+1}{s^2+3s+2} &\frac{3s+2}{s^2+s+1} \\ \frac{s+1}{s^2+2s+1} &\frac{4s+1}{s^2+4s+3} \end{bmatrix} \]我们希望利用MATLAB求解对应的状态空间方程。
我们可以利用tf函数将传递函数矩阵表示为MATLAB中的传递函数对象:```matlabnum = {[2 1; 3 2]; [1 1; 4 1]}; % 分子矩阵den = {[1 3 2; 1 1 1]; [1 2 1; 1 4 3]}; % 分母矩阵G = tf(num,den);```接下来,我们可以利用ss函数将传递函数对象转化为状态空间对象:```matlabsys = ss(G);```通过以上步骤,我们就可以得到对应的状态空间方程。
值得注意的是,状态空间方程通常表示为如下形式:\[ \dot{x} = Ax + Bu \]\[ y = Cx + Du \]其中,\[ A \]、\[ B \]、\[ C \]、\[ D \] 分别是状态方程的系数矩阵,\[ x \] 是系统的状态向量,\[ u \] 是系统的输入向量,\[ y \] 是系统的输出向量。
用MATLAB分析状态空间模型
a= x1 x2 x3 x4 b= u1 x1 4 x2 2 x3 2 x4 0 x1 2.25 2.25 0.25 1.25 x2 x3 x4 -5 -1.25 -0.5 -4.25 -1.25 -0.25 -0.5 -1.25 -1 -1.75 -0.25 -0.75 c=
u2 6 4 2 2
0 0 x 0 0 y 1 1 0 0 0 0 0 0 1 0 1 x u 0 0 1 5 0 2 0 0 x 0
可由下列语句得出系统相应的传递函数模 型 • >> A=[0,1,0,0;0,0,-1,0;0,0,0,1;0,0,5,0]; • >> B=[0;1;0;-2]; • >> C=[1,0,0,0]; • >> D=0; • >> G=ss(A,B,C,D);G1=tf(G)
可由下列语句输入到MATLAB工作空间 >>A=[2.25,-5,-1.25,-0.5;2.25,-4.25,1.25,-0.25;0.25,-0.5,-1.25,-1;1.25,-1.75,0.25,-0.75]; >>B=[4,6;2,4;2,2;0,2]; >>C=[0,0,0,1;0,2,0,2]; >>D=zeros(2,2); >>G=ss(A,B,C,D)
Ax Bu x y Cx Du
>>A=[a11,a12,…,a1n;a21,a22,…,a2n;…;an1, …,ann]; >>B=[b0,b1,…,bn]; >>C=[c1,c2,…,cn]; >>D=d; 构造状态空间模型 >>ss(A,B,C,D)
MATLABSimulink与控制系统仿真实验报告
MATLAB/Simulink 与控制系统仿真实验报告姓名:喻彬彬学号:K031541725实验1、MATLAB/Simulink 仿真基础及控制系统模型的建立一、实验目的1、掌握MATLAB/Simulink 仿真的基本知识;2、熟练应用MATLAB 软件建立控制系统模型。
二、实验设备电脑一台;MATLAB 仿真软件一个三、实验内容1、熟悉MATLAB/Smulink 仿真软件。
2、一个单位负反馈二阶系统,其开环传递函数为210()3G s s s =+。
用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。
3、某控制系统的传递函数为()()()1()Y s G s X s G s =+,其中250()23s G s s s+=+。
用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。
4、一闭环系统结构如图所示,其中系统前向通道的传递函数为320.520()0.11220s G s s s s s+=+++g ,而且前向通道有一个[-0.2,0.5]的限幅环节,图中用N 表示,反馈通道的增益为1.5,系统为负反馈,阶跃输入经1.5倍的增益作用到系统。
用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。
四、实验报告要求实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。
五、实验思考题总结仿真模型构建及调试过程中的心得体会。
题1、(1)利用Simulink的Library窗口中的【File】→【New】,打开一个新的模型窗口。
(2)分别从信号源库(Sourse)、输出方式库(Sink)、数学运算库(Math)、连续系统库(Continuous)中,用鼠标把阶跃信号发生器(Step)、示波器(Scope)、传递函数(Transfern Fcn)和相加器(Sum)4个标准功能模块选中,并将其拖至模型窗口。
第8章MATLAB系统空间分析法
EX2 已知控制系统 求控制系统的特征方程
A=[2 1 -1;1 2 -1;-1 -1 2]; I=[1 0 0;0 1 0;0 0 1];
2 1 1 A 1 2 1 1 1 2
syms s %符号计算
det(s*I-A)
ans = s^3-6*s^2+9*s-4 s= [ 4] [ 1] [ 1]
1
AZ Bu Z y C Z Du
EX3
A=[0 -2;1 -3];B=[2 0]';C=[0 3]; A1 = 0 P=[6 2;2 0];%变换矩阵x=Pz -2 P1=inv(P); A1=P1*A*P %z坐标系的模型 B1=P1*B C1=C*P B1 = 0 1 -3
第8章 系统状态空间分析法
8.4节和8.5节
内容
系统特征方程及解 关于系统相似变换 关于系统可观性、可控性判别的 状态反馈极点配置 状态观测器
8.1 系统状态方程的解
X(t ) e X0 e
At 0 t A ( t )
BsI A]1}
A X B u Equals to X Model A , B , C Model y CX AX Bu X A, B, C y CX
u
u
B
x
x
C
A
y
But x in model is different from x in the origin system A, B, C, because x0 is/are unmeasured directly.
若状态方程是齐次的,即有:
Ax x x(t ) e x(0)
用MATLAB分析状态空间模型
用MATLAB分析状态空间模型状态空间模型是一种用于描述动态系统的数学模型。
在MATLAB中,可以使用状态空间方法对系统进行分析和控制。
本文将从状态空间模型的定义、矩阵表示、稳定性以及控制器设计等方面进行详细介绍。
一、状态空间模型的定义状态空间模型是一种描述动态系统的数学模型,其中系统的行为是通过状态变量的演化来表示的。
状态空间模型通常由一组一阶微分方程表示,形式如下:dx(t)-------------------=Ax(t)+Bu(t)dty(t)=Cx(t)+Du(t)其中,x(t)是状态变量向量,表示系统的内部状态;u(t)是输入向量,表示对系统的外部输入;y(t)是输出向量,表示观测到的系统输出;A、B、C和D分别是系统的状态矩阵、输入矩阵、输出矩阵和直接传递矩阵。
二、状态空间模型的矩阵表示在MATLAB中,可以使用矩阵表示状态空间模型。
假设有一个由状态变量x、输入变量u和输出变量y组成的系统,可以通过矩阵表示如下:x'=Ax+Buy=Cx+Du其中,x'表示状态变量x的导数。
在MATLAB中,可以使用matrix函数创建状态矩阵A、输入矩阵B、输出矩阵C和直接传递矩阵D。
例如,可以使用如下代码定义一个状态空间模型:A=[12;34];B=[1;1];C=[10];D=0;sys = ss(A, B, C, D);在上述代码中,创建了一个状态空间模型sys,其中状态矩阵A是一个2×2的矩阵,输入矩阵B是一个2×1的矩阵,输出矩阵C是一个1×2的矩阵,直接传递矩阵D是一个标量。
三、状态空间模型的稳定性分析在控制系统设计中,稳定性是一个重要的指标。
对于线性时不变系统,可以使用状态空间模型进行稳定性分析。
MATLAB提供了一些函数用于稳定性分析,如eig、pole和isstable等。
eig函数用于计算系统的特征值,特征值的实部决定了系统的稳定性。
【实验报告】《自动控制原理》实验三 用Matlab进行状态空间分析及设计
实验三用Matlab进行状态空间分析及设计1.A=[0 1 0;0 0 1;-6 -11 -6];B=[0;0;1];C=[1 0 0];sys1=ss(A,B,C,0);[num,den]=ss2tf(A,B,C,0);sys2=tf(num,den);[z,p,k]=tf2zp(num,den);e=eig(sys1);t=0;F=expm(A*t);t=[0:0.1:5];t0=0;x0=[2;1;2];u=stepfun(t,t0);[y,x]=lsim(sys1,u,t,x0);figure(1);plot(t,x);grid;title('step response of x');figure(2);plot(t,y);grid;title('step response of y');Qc1=ctrb(sys1);c=rank(Qc1);if c==3disp('sys1 is controlled');endQo1=obsv(sys1);o=rank(Qo1);if o==3disp('sys1 is observable');endsys3=ss(A',C',B',0);T=[1 2 4;0 1 0;0 0 1] ;sys4=ss2ss(sys1,T);Qc4=ctrb(sys4);c=rank(Qc4);if c==3disp('sys4 is controlled');endQo4=obsv(sys4);o=rank(Qo4);if o==3disp('sys4 is observable');end(1)传递函数及由此得到的系统的极点极点p =[-3.0000-2.0000-1.0000](2)根据状态空间模型得到的系统的特征值(由语句eig(sys1)求出)ans=[-1.0000-2.0000-3.0000]系统的特征值全部位于s平面的左半部分,由此判断出系统是一个稳定系统(3)求系统的状态转移矩阵(由语句symst1 ;expm(A*t1)求出)(4)求系统在x0=[2; 1; 2], u为单位阶跃输入时x及y的响应记录曲线如下:A:单位阶跃输入时状态变量X的响应曲线:B:单位阶跃输入时系统输出y响应曲线(5)系统的可控性,可观性分析A.系统的可控性矩阵s为:s = 0 0 10 1 -61 -6 25则系统可控性矩阵的秩f=3,矩阵A的维数为n=3得到系统的结果是system is controlled即系统是可控的B.系统的可观性矩阵v为:v =1 0 00 1 00 0 1则系统可观性矩阵的秩m=3,矩阵A的维数为n=3得到系统的结果是system is observable即系统是可观测的实验结论:由运行结果可知该系统既可控也可观(6)将原来的系统状态空间模型转化为以下俩种标准形式A.转化为对角线的标准形式(由语句sys3=canon(sys1,'modal')求出)B.转化成为A为伴随矩阵的标准形式(由语句sys4=canon(sys1,'companion')求出)(6)T=[1 2 4;0 1 0;0 0 1] 对上述状态空间模型进行变换,分析变换后的系统的空间模型为(有语句T=[1 2 4;0 1 0;0 0 1] ;sys5=ss2ss(sys1,T)实现)对变换后的系统的空间模型进行可控可观性分析得到的结果是系统的可控性矩阵s为s=1 0 00 1 00 0 1可控性矩阵的秩f=3得到系统的结果是system is controlled即系统是可控的系统的可观性矩阵v为v =0 0 10 1 -61 -6 25系统的可观测矩阵的秩m =3得到系统的结果是system is observable即系统是可观测的系统的特征根ans=[ -1.0000 -2.0000 -3.0000 ]2.A1=[0 2 0 0;0 1 -2 0;0 0 3 1;1 0 0 0];B1=[1 0;0 0;0 1;1 0];C1=[0 1 0 0;0 0 1 0];sys1=ss(A1,B1,C1,0);Qc1=ctrb(sys1);c=rank(Qc1);if c==4disp('sys1 is controlled');endQo1=obsv(sys1);o=rank(Qo1);if o==4disp('sys1 is observable');end系统的可控性矩阵s为:s =1 0 0 0 0 -4 -4 -160 0 0 -2 -2 -8 -10 -260 1 1 3 4 9 12 271 0 1 0 0 0 0 -4可控性矩阵的秩f = 4系统的维数n =4得到系统的结果是system is controlled即系统是可控的系统的可观性矩阵v为:v =0 1 0 00 0 1 00 1 -2 00 0 3 10 1 -8 -21 0 9 3-2 1 -26 -83 2 27 9系统的可观性矩阵秩m =4得到系统的结果是system is observable即系统是可观测的综上说明该系统即是可控的也是可观测的A2=[-3 1 0 0 0 0 0 0;0 -3 0 0 0 0 0 0;0 0 -4 1 0 0 0 0;0 0 0 -4 0 0 0 0;0 0 0 0 -1 1 0 0;0 0 0 0 0 -1 0 0;0 0 0 0 0 0 -5 1;0 0 0 0 0 0 0 5];B2=[1 3;5 7;4 3;0 0;1 6;0 0;9 2;0 0];C2=[3 1 0 5 0 0 3 6;1 4 0 2 0 0 7 1];sys2=ss(A2,B2,C2,0);Qc2=ctrb(sys2);c2=rank(Qc2);if c2==8disp('sys2 is controlled');endQo2=obsv(sys2);o2=rank(Qo2);if o2==8disp('sys2 is observable');end[A21,B21,C21,T21,K21]=ctrbf(A2,B2,C2);[A22,B22,C22,T22,K22]=obsvf(A2,B2,C2);系统的可控性矩阵s为:可控性矩阵的秩f=5系统的维数n =8得到系统的结果是system is no controlled即系统是不可控的系统的可观性矩阵v为:系统的可观性矩阵秩m =5得到系统的结果是system is no observable即系统是不可观测的综上说明该系统即是不可控的也是不可观测的A3=[-1 0 0 0;2 -3 0 0;1 0 -2 0;4 -1 2 -4];B3=[0;0;1;2];C3=[3 0 1 0];sys3=ss(A3,B3,C3,0);Qc3=ctrb(sys3);c3=rank(Qc3);if c3==4disp('sys3 is controlled');endQo3=obsv(sys3);o3=rank(Qo3);if o3==4disp('sys3 is observable');end[A31,B31,C31,T31,K31]=ctrbf(A3,B3,C3);[A32,B32,C32,T32,K32]=obsvf(A3,B3,C3);系统的可控性矩阵s为:s =0 0 0 00 0 0 01 -2 4 -82 -6 20 -72可控性矩阵的秩f = 2系统的维数n =4得到系统的结果是system is no controlled即系统是不可控的系统的可观性矩阵v为:v =3 0 1 0-2 0 -2 00 0 4 04 0 -8 0系统的可观性矩阵秩m =2得到系统的结果是system is no observable即系统是不可观测的综上说明该系统即是不可控的也是不可观测的3.A=[0 1 0; 0 0 1; -50 -25 -12];B=[0;0;1];C=[1 0 0];sys1=ss(A,B,C,0);Qc1=ctrb(sys1);c=rank(Qc1);if c==3disp('sys1 is controlled');endQo1=obsv(sys1);o=rank(Qo1);if o==3disp('sys1 is observable');endp=[-1,-10,-12];k=place(A,B,p);sys2=ss(A-B*k,B,C,0);[num,den]=ss2tf(A-B*k,B,C,0);G=tf(num,den);figure(1);step(sys1);grid;hold on;step(sys2);grid;legend('sys1','sys2');hold o ff;(1)判别系统的可控性系统的可控性矩阵s为:s =0 0 10 1 -121 -12 119可控性矩阵的秩f = 3系统的维数n =3得到系统的结果是system is controlled即系统是可控的系统的可观性矩阵v为:v =1 0 00 1 00 0 1系统的可观性矩阵秩m =3得到系统的结果是system is observable即系统是可观测的综上说明该系统即是可控的也是可观测的(2)设计状态反馈控制器使闭环极点为p=[-1,-10,-12];所求状态反馈增益矩阵为k=[70.0000 117.0000 11.0000] 状态反馈控制系统闭环状态矩阵:A1 =0 1 00 0 1-120-142 -23(3)求出闭环系统的传递函数和动态方程改变前系统传递函数改变后系统传递函数改变前系统的动态方程改变后系统动态方程(4)比较反馈前后系统的阶跃响应A.系统的单位阶跃响应状态曲线B.系统的单位阶跃响应输出曲线。
自动控制原理的MATLAB仿真与实践第8章 线性系统状态空间分析
态方程系数矩阵
Gtf=tf(num,den),G=ss(Gtf): 通过多项式分式传递函数Gtf
来建立状态空间模型G
Gz= ss(A, B, C, D,Ts): 建立离散状态模型Gz。(A, B, C,
D)分别为连续系统的系数矩阵,
Ts为采样周期,当Ts=1或者Ts=[]
时,系统的采样周期未定义。
2011.05
8. 6 线性二次型最优控制器设计 8. 7状态空间系统的稳定性分析 8.8作业与实验
2011.05
3
8.1 状态空间模型的建立与转换
线性系统的状态空间模型包括时间连续系统和时间 离散系统,可分别表示为
其中,u为输入量,x为中间变量(状态变量),y为输出量
;第一个方程式称为状态方程,A称为状态矩阵,B称为
u1 y1 0 Continuous-time model.
2011.05
10
说明:MATLAB状态模型Gs可以用来参与计算,但 Gs中的系数矩阵a, b, c和d是不能单独用来运算的, 如4*b。 如果要运算,应先提取再运算,如 [a,b,c,d]=ssdata(G); 4*b,或 4*G.b。
控制矩阵;
2011.05
4
第二等式称为输出方程,C称为输出矩阵,D称为 前馈矩阵。(A, B, C, D)统称为状态模型系数矩阵。
需要说明的是,在MATLAB状态空间系统分析时 ,需要用到矩阵运算。表8-1给出了MATLAB关于线性 线性代数与矩阵运算的常用命令格式及说明,在状态 空间分析时会经常用到。
2011.05
5
8.1.1 MATLAB状态空间模型的生成
如前所述,在MATLAB环境下进行系统分析及运 算之前,应建立MATLAB模型。状态模型包括连续和 离散模型。常用建立状态空间模型的函数命令格式及 说明见表8-2。
线性系统状态空间分析与运动解
【实验地点】课外(宿舍) 【实验目的】1、学会利用MATLAB 实现离散系统传递函数模型的生成2、学会利用MATLAB 将连续系统离散化 【实验设备与软件】1、MATLAB/Simulink 数值分析软件2、计算机一台 【实验原理】1、求矩阵特征值和特征向量命令格式[V J]=eig (A ) Cv=eig(A)说明:V 特征向量,J 是Jordan 型,cv 是特征值列向量 2、求运动的方法(1)利用Laplace 逆变换----适合于连续/离散线性系统采用ilaplace/iztrans 对传递函数求逆,这种方法一般是零输入情况下求响应。
(2)用连续(离散)状态转移矩阵表示系统解析解----适合于线性定常系统 对连续定常系统有:假设初始时刻为零,LTI 系统的解析解为dt Bu ee x e t x tAtAtAt⎰⎰+=0)()0()(τ。
若u (t )是单位阶跃输入,则上述解可写成dtBu eex e t x tAtAtAt⎰⎰+=0)()0()(τ。
进一步简化为:Bu A Bu A x e t x At 11))0(()(---+=对离散线性定常系统有:∑---+=11)()0()(k i kki Hu G x G k x(3)状态方程的数值分析方法----适合于连续线性系统和非线性系统采用直接数值积分很容易的处理各种定常/时变和线性/非线性系统。
有很多数值积分方法,其中有一类预测-修正数值积分方法+自适应步长调整的算法比较有效。
在MATLAB/Simulink 中包含的多种有效的、适用于不同类型的ODE 求解算法,典型的是Runge-Ktuta 算法,其通常使用如下的函数格式:[t,x]=ode45(odefun,[ti,tf],x0,options)----采用四阶、五阶Runge-Ktuta 算法 [t,x]=ode23(odefun,[ti,tf],x0,options)----采用二阶、三阶Runge-Ktuta 算法 说明:a.这两个函数是求解非刚性常微分方程的函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现代控制理论第一次上机实验报告 实验二 利用MATLAB 求取线性系统的状态空间模型的解
实验目的:
1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;
2、通过编程、上机调试,掌握系统运动的分析方法。
实验原理:
一、系统时域响应的求解方法
给定系统的状态空间模型:
()()()()()()
x t Ax t Bu t y t Cx t Du t =+=+ (2.1) 设系统的初始时刻00t =,初始状态为(0)x ,则系统状态方程的解为
0()0
()(0)()(0)()t At At
A t At A t x t e x e e Bu d e x e Bu d ττττττ--=+=+⎰⎰ (2.2)
输出为
()0()(0)()()t
At A t y t Ce x C e Bu d Du t τττ-=++⎰ (2.3) 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。
输出()y t 由三部分组成。
第一部分是当外部输入等于零时,由初始状态0()x t 引起的,故为系统的零输入响应;第二部分是当初始状态0()x t 为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。
实验步骤
1、构建系统的状态空间模型,采用MA TLAB 的m-文件编程;
2、求取系统的状态和输出响应;
3、在MA TLAB 界面下调试程序,并检查是否运行正确。
实验要求
1、在运行以上程序的基础上,应用MA TLAB 验证一个振动现象可以由以下系统产生:
01()10x t x ⎡⎤=⎢⎥-⎣⎦
证明该系统的解是
cos sin ()(0)sin cos t t x t x t t ⎡⎤=⎢⎥-⎣⎦
假设初始条件0(0)
1x ⎡⎤=⎢⎥⎣⎦
,用Matlab 观察该系统解的形状。
m-程序如下:
A=[0 1;-1 0];
B=[0;0]; D=B;
C=[1 0;0 1];
sys=ss(A,B,C,D);
x0=[0;1];
t=[0:0.01:20];
[y,T,x]=lsim(sys,u,t,x0)
subplot(2,1,1),plot(T,x(:,1))
xlabel('Time(sec)'),ylabel('X_1')
subplot(2,1,2),plot(T,x(:,2))
xlabel('Time(sec)'),ylabel('X_2')
仿真结果如下:
仿真分析:
由仿真图可知,X1和X2周期相同约为6.2,相位差90度,故X1=sint;X2=cost,得证。
实验心得
通过本次实验,更清楚的了解了书上例2-1解题过程。