实验四用MATLAB求解状态空间模型

合集下载

状态空间模型分析实验报告

状态空间模型分析实验报告
num = 5 -25 30
den = 1 0 -3 2
z =3.0000
2.0000
p = -2.0001
1.3397
0.999999984416603
k = 5
ssG =
a =
x1 x2 x3
x1 0 1.5 -1
x2 2 0 0
x3 0 1 0
b =
u1
x1 8
x2 0
x3 0
c =
x1 x2 x3
den=conv(conv([1,-1],[1 -1]),[1 2])%传递函数分母多项式
tfG=tf(num,den);%传函的分式形式
zpG=zpk(tfG);%转换成零极点模型
[z,p,k]=zpkdata(zpG,'v')%列出零极点及比例系数
ssG=ss(tfG)%转换成状态空间形式
结果:
代码:
A=[0 1;-3 -4];
B=[0;1];
co=ctrb(A,B);
det(ob)
结果:
det(ob)=-1;所以系统是能控的
代码:
A=[0 1;-3 -4];
B=[0;1];
C=[3 2];
D=[0];
P=[-4 -5]
K=place(A,B,P)
t=0:0.01:5;
U=0.025*ones(size(t));%幅值为0.025输入阶跃信号
按能控性分解后的系统状态空间表达式为:
故此二维子系统是能控的。
能观性分解
代码:
[a2,b2,c2,t,k]=obsvf(A,B,C)%能观性分解
结果:
a2 = -1.0000 1.3416 3.8341

matlab状态空间表达式的解

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对状态空间模型进行分析

利用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进行传递函数和状态空间模型间的转换

求其传递函数矩阵。 解 个传递函数: ⎡Y1 ( s ) U 1 ( s ) Y1 ( s ) U 2 ( s ) ⎤ ⎢Y ( s ) U ( s ) Y ( s ) U ( s )⎥ 1 2 2 ⎣ 2 ⎦ 当考虑输入 u1 时,可设 u 2 为零,反之亦然。执行以下的 m-文件:
A=[0 1;-25 –4]; B=[1 1;0 1]; C=[1 0;0 1]; D=[0 0;0 0]; [num1,den1]=ss2tf(A,B,C,D,1) [num2,den2]=ss2tf(A,B,C,D,2) 得到:
G (s) =
Y2 ( s ) − 25 = 2 U 1 (s) s + 4s + 25 Y2 ( s ) s − 25 = U 2 (s) s 2 + 4s + 25
10 s + 10 s + 6 s 2 + 5s + 10
3

执行以下的 m-文件:
num=[0 0 10 10]; den=[1 6 5 10]; [A,B,C,D]=tf2ss(num,den) 得到
《现代控制理论》
实验指导书
俞立
徐建明 编
浙江工业大学信息工程学院
2007 年 4 月
1
实验 1
利用 MATLAB 进行传递函数和状态空间模型间的转换
1.1 实验设备 PC 计算机 1 台(要求 P4-1.8G 以上) ,MATLAB6.X 或 MATLAB7.X 软件 1 套。 1.2 实验目的 1、 学习系统状态空间模型的建立方法、 了解状态空间模型与传递函数相互转换的方法; 2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。 1.3 实验原理说明 设系统的状态空间模型是

基于MATLAB控制系统仿真实验报告

基于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 求解状态空间模型1、实验设备MATLAB 软件2、实验目的① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数;② 通过编程、上机调试,进行求解。

3、实验原理说明Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有:初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。

数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。

4、实验步骤① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。

② 在MATLAB 界面下调试程序,并检查是否运行正确。

习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。

Matlab 程序如下:A=[0 1; -2 -3];B=[]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[y,t,x]=initial(sys,x0,0:5);plot(t,x)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。

并计算该系统的单位阶跃状态响应表达式。

Matlab 程序如下:A=[0 1; -2 -3];B=[0; 1]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[u t]=gensig('square',3,10,0.1)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x[y,t,x] = lsim(sys,u,t,x0)plot(t,u,t,x);(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。

matlab离散化状态空间模型 -回复

matlab离散化状态空间模型 -回复

matlab离散化状态空间模型-回复如何使用MATLAB 进行离散化状态空间模型的建模和分析离散化状态空间模型是一类广泛应用于系统建模和分析的数学工具。

它在控制论和动态系统理论中有着重要的作用。

MATLAB 是一个功能强大的数学软件,可以方便地进行离散化状态空间模型的建模和分析。

本文将介绍如何使用MATLAB 进行离散化状态空间模型的建模和分析。

一、离散化状态空间模型的概念和原理离散化状态空间模型是描述离散时间系统动态特性的一种数学模型。

它由状态方程和输出方程组成。

状态方程描述了系统状态的演化规律,输出方程描述了系统输出与状态的关系。

离散时间系统的状态方程和输出方程可以用矩阵形式表示如下:x(k+1) = Ax(k) + Bu(k)y(k) = Cx(k) + Du(k)其中,x(k) 表示系统在时刻k 的状态向量,u(k) 表示系统在时刻k 的输入向量,y(k) 表示系统在时刻k 的输出向量,A、B、C、D 分别为系统的状态矩阵、输入矩阵、输出矩阵和直接传递矩阵。

离散化状态空间模型的建模需要将连续时间系统的状态空间模型进行离散化处理。

离散化的基本原理是将连续时间系统的状态方程和输出方程在一段时间内进行离散化处理,使得系统的状态和输出在该离散时间内近似地描述系统的动态特性。

二、使用MATLAB 进行离散化状态空间模型的建模和分析的步骤1. 定义系统的连续时间状态空间模型首先,需要定义连续时间状态空间模型的状态矩阵A、输入矩阵B、输出矩阵C 和直接传递矩阵D。

这些矩阵的维度和元素值反映了系统的动态特性。

例如,假设我们有一个连续时间状态空间模型:dx(t)/dt = Ax(t) + Bu(t)y(t) = Cx(t) + Du(t)其中,状态向量x(t) 的维度为n,输入向量u(t) 的维度为m,输出向量y(t) 的维度为p。

那么,我们可以用MATLAB 编写如下代码定义连续时间状态空间模型:A = [a11, a12, ..., a1n; a21, a22, ..., a2n; ..., an1, an2, ..., ann];B = [b11, b12, ..., b1m; b21, b22, ..., b2m; ..., bn1, bn2, ..., bnm];C = [c11, c12, ..., c1n; c21, c22, ..., c2n; ..., cp1, cp2, ..., cpn];D = [d11, d12, ..., d1m; d21, d22, ..., d2m; ..., dp1, dp2, ..., dpm];2. 将连续时间状态空间模型离散化在MATLAB 中,可以使用c2d 函数将连续时间状态空间模型离散化为离散时间状态空间模型。

用MATLAB分析状态状态空间模型

用MATLAB分析状态状态空间模型
num=6; den=[1 6 11 6]; Gtf=tf(num,den); Gss=ss(Gtf),
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实验报告

北京交通大学现代控制理论matlab实验报告

实验一利用MATLAB进行线性系统的模型转换及联结课程:现代控制理论姓名:学号:班级:指导教师:标题 (1)目录 (2)一实验目的: (3)二实验原理: (3)三实验步骤: (6)四实验要求: (7)五实验内容: (8)1 (8)2 (18)3 (29)4 (36)5 (37)六实验感想: (40)一 实验目的:1、学习系统状态空间模型的建立方法、了解状态空间模型与传递函数、零极点模型之间相互转换的方法;2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。

3、通过编程、上机调试,掌握系统模型的联结方法。

二 实验原理: 一、连续系统(1)状态空间模型x Ax Buy Cx Du=+=+ (1.1)其中:nx R ∈是系统的状态向量,mu R ∈是控制输入,py R ∈是测量输出,A 是n n ⨯维状态矩阵、B 是n m ⨯维输入矩阵、C 是p n ⨯维输出矩阵、D 是直接转移矩阵。

在MATLAB 中,用(A,B,C,D )矩阵组表示。

系统传递函数和状态空间模型之间的关系如式(1.2)所示。

1()()G s C sI A B D -=-+ (1.2)(2)传递函数模型11101110()(),()m m m m n n n n b s b s b s b num s H s m n den s a s a s a s a ----++++==≤++++ 在MA TLAB 中,直接用分子/分母的系数表示1010[,,,][,,,]m m n n num b b b den a a a --==(3)零极点增益模型1212()()()()()()()m n s z s z s z H s ks p s p s p ---=---在MA TLAB 中,用[z, p, k]矢量组表示,即1212[,,,];[,,,];[];m n z z z z p p p p k k ===二、离散系统(1)传递函数模型11101110()m m m m n n n n b z b z b z b H z a z a z a z a ----++++=++++ (2)零极点增益模型1212()()()()()()()m n z z z z z z H z kz p z p z p ---=---(3)状态空间模型(1)()()()()()x k Ax k Bu k y k Cx k Du k +=+=+三、三种模型间的转换表示状态空间模型和传递函数的MA TLAB 函数。

matlab根据传递函数矩阵求状态空间方程

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导出连续状态空间模型的离散化模型

利用MATLAB导出连续状态空间模型的离散化模型

实验3 利用MATLAB 导出连续状态空间模型的离散化模型3.1 实验设备同实验1。

3.2 实验目的1、基于对象的一个连续时间状态空间模型,导出其相应的离散化状态空间模型;2、通过编程、上机调试,掌握离散系统运动分析方法。

3.3 实验原理说明给定一个连续时间系统的状态空间模型:)()()()()()(t t t t t t Du Cx y Bu Ax x +=+=& (3.1) 状态空间模型(3.1)的输入信号具有以下特性:)(t u )()(kT t u u =, (3.2)T kT t kT +<≤已知第个采样时刻的状态和第k 个采样时刻到第)(kT x k 1+k 个采样时刻间的输入,可得第个采样时刻)()(kT t u u =T k )(+1处的状态1+k ∫+−++−+=+T k kT T k kT kT T k T k )1(d )())1(()())1(())1((τττBu Φx Φx (3.3)其中: T kT T k e e kT T k A A Φ==−+−+))1(())1(())1(())1((ττ−+=−+T k e T k A Φ由于输入信号在两个采样时刻之间都取常值,故对式(3.3)中的积分式进行一个时间变量替换τσ−+=T k )1(后,可得)(d )())1((0kT e kT e T k T T Bu x x A A ⎟⎠⎞⎜⎝⎛+=+∫σσ (3.4) 另一方面,以周期T 对输出方程进行采样,得到)()()(kT kT kT Du Cx y +=在周期采样的情况下,用来表示第k 个采样时刻kT 。

因此,连续时间状态空间模型(3.1)的离散化方程可以写成k ⎩⎨⎧+=+=+)()()()()()()()1(k k k k T k T k Du Cx y u H x G x (3.5) 其中:⎪⎩⎪⎨⎧⎟⎠⎞⎜⎝⎛==∫B H G A A T Te T e T 0d )()(σσ (3.6) 已知系统的连续时间状态空间模型,MATLAB 提供了计算离散化状态空间模型中状态矩阵和输入矩阵的函数:[G,H]=c2d(A,B,T)其中的T 是离散化模型的采样周期。

利用MATLAB对状态空间模型进行分析

利用MATLAB对状态空间模型进行分析

实验2 利用MATLAB 对状态空间模型进行分析2.1 实验设备 同实验1。

2.2 实验目的1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;2、通过编程、上机调试,掌握系统运动的分析方法。

2.3 实验原理说明给定系统的状态空间模型:)()()()()()(t t t t t t Du Cx y Bu Ax x+=+=& (2.1)设系统的初始时刻,初始状态为,则系统状态方程的解为)0(x 00=t ∫∫−−+=+=tt t tt t e e eee t 0)(0d )()0(d )()0()(ττττττBu x Bu x x A A A A A (2.2)输出为)(d )()0()(0)(t e e t tt t Du Bu C x C y A A ++=∫−τττ (2.3))(t x 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。

输出由三部分组成。

第一部分是当外部输入等于零时,由初始状态引起的,故为系统的零输入响应;第二部分是当初始状态为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。

)(t y )(0t x )(0t x MATLAB 函数:函数initial(A,B,C,D,x0)可以得到系统输出对初始状态x0的时间响应; 函数step(A,B,C,D)给出了系统的单位阶跃响应曲线; 函数impulse(A,B,C,D) 给出了系统的单位脉冲响应曲线;函数 [y,T,x]=lsim(sys,u,t,x0) 给出了一个状态空间模型对任意输入的响应,其中的sys 表示贮存在计算机内的状态空间模型,它可以由函数sys=ss(A,B,C,D)得到,x0是初始状态。

u 2.4 实验步骤1、构建系统的状态空间模型,采用MATLA 的m-文件编程;2、求取系统的状态和输出响应;3、在MATLA 界面下调试程序,并检查是否运行正确。

用MATLAB分析状态空间模型

用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)

基于MATLAB的控制系统状态空间分析

基于MATLAB的控制系统状态空间分析

现代控制理论实验报告学院专业班级姓名指导教师年月日基于MATLAB的控制系统状态空间分析一、实验目的1、根据线性定常系统的微分方程或传递函数阵,通过MATLAB函数实现其状态空间表达式;2、将线性定常系统状态空间表达式转化为传递函数阵;3、通过MATLAB命令实现状态方程的求解;4、通过线性变换将状态空间表达式转化为对角标准型和约当标准型。

二、实验原理1、状态空间表达式建立与状态方程求解:运用适当的MATLAB指令语言可求得状态空间表达式或是传递函数以及状态方程求解,其过程比人工计算简单得多,而且结果准确,从而大降低了了人工计算的失误率;2、线性变换:若A的特征值没有重根,则可以将A变换为对角阵,变换矩阵为每个特征值对应特征向量所组成的矩阵;若矩阵A的n个特征值中有重特征值时,可分为两种情况。

一般情况是,有特征值,但矩阵A仍有n个独立的特征向量,即每个重特征值所对应的独立特征向量数恰好等于特征值的重数,这时就同没有重特征值的情况一样。

另一种,A有重特征值,矩阵A的独立特征向量个数小于n。

这时不能化为对角形,只能化为约当形。

三、实验题目1、1-5题已知微分方程+5+7+3y=+3+2u, 写其相应的状态空间表达式.2、1-7题给定下列状态空间表达式=+uY=求系统的传递函数。

3、1-9试求下列状态空间表达式的传递函数阵=+u。

4、求下列状态空间表达式的解:=x+u,Y=,初始状态x=,输入u是单位阶跃函数。

四、实验内容题目1:函数程序:num=[1,3,2];den=[1,5,7,3];[A,B,C,D]=tf2ss(num,den)执行结果:A =-5 -7 -31 0 00 1 0B =1C =1 3 2D =题目2:解输入Matlab 语句如下:A=[0 1 0;-2 -3 0;-1 1 -3];B=[0;1;2];C=[0 0 1];D=[0];执行结果:[num,den]=ss2tf(A,B,C,D)num =0 2.0000 7.0000 3.0000den =1 6 11 6所以由此可得系统的传递函数为=题目3:函数程序:syms s;A=[4 1 2;1 0 2;1 -1 3];B=[3 1;2 7;5 3];C=[1 2 0;0 1 1];D=[0];F=inv(s*eye-A)G=simple(simple(C*F*B)+D)执行结果:F =[ -2/5, (3*s - 5)/(5*(s - 1)), -(s - 2)/(5*(s - 1))] [ 1/5, -(4*s - 10)/(5*(s - 1)), (3*s - 6)/(5*(s - 1))] [ 1/5, (s + 5)/(5*(s - 1)), -(2*s + 1)/(5*(s - 1))] G =[ 3 - 1/(s - 1), 11/(s - 1) - 4][ 1 - 6/(5*(s - 1)), 66/(5*(s - 1)) - 16/5]题目4:函数程序:syms s t x0 tao phi phi0;A=[0 1;0 0];B=[0;1];I=[1 0;0 1];E=s*I-A;C=det(E);D=collect(inv(E));phio=ilaplace(D);x0=[1;1];x1=phio*x0;phi=subs(phio,'t',(t-tao));F=phi*B*1;x2=int(F,tao,0,t);x=collect(x1+x2)执行结果:x =t^2/2 + t + 1t + 1可得相应的输出为:Y=x=+t+1五、实验总结通过本次实验课,我熟练的掌握了用MATLAB软件在已知传递函数的条件下,求状态空间表达式。

现代控制实验(Matlab)

现代控制实验(Matlab)

实验1:用MATLAB 语言对状态空间模型进行分析一.实验目的:1.掌握状态方程和输出方程输入语句G=ss(A,B,C,D)的用法2.求状态方程的解3.判断系统的能控性与能观性4.判断系统的稳定性二.实验原理:1.掌握状态方程和输出方程输入语句G=ss(A,B,C,D)的用法对于线性时不变系统来说,其状态方程为⎩⎨⎧+=+=Du Cx y Bu Ax x在Matlab 下只需将各系数矩阵输到工作空间即可。

调用格式: G=ss(A,B,C,D)例1. 双输入双输出系统的状态方程表示为u x x ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=112501327204123526134021, x y ⎥⎦⎤⎢⎣⎡=10221200该状态方程可以由下面语句输入到MATLAB 工作空间去。

A=[1,2,0,4;3,-1,6,2;5,3,2,1;4,0,-2,7];B=[2,3;1,0;5,2;1,1];C=[0,0,2,1;2,2,0,1];D=zeros(2,2);G=ss(A,B,C,D)2.矩阵eAt 的数值计算在Matlab 中,给定矩阵A 和时间t 的值,计算矩阵指数e At的值可以直接采用基本矩阵函数expm()。

Matlab 的expm()函数采用帕德(Pade)逼近法计算矩阵指数e At ,精度高,数值稳定性好。

expm()函数的主要调用格式为:Y = expm(X)其中,X 为输入的需计算矩阵指数的矩阵,Y 为计算的结果。

例2.(1)试在Matlab 中计算矩阵0123A ⎡⎤=⎢⎥--⎣⎦ 的矩阵指数e At 。

syms tA=[0 1;-1 -3];eAt=expm(A*t)(2)求在t=0.3时的矩阵指数e At 的值。

A=[0 1;-1 -3];eAt=expm(A*t)t=0.3 ;eAt03=expm(A*t)3.求状态方程的解例3.已知SISO 系统的状态方程为[]01323011xx u y x ⎡⎤⎡⎤=+⎢⎥⎢⎥--⎣⎦⎣⎦=(选作)(1)0u =,()101x ⎡⎤=⎢⎥-⎣⎦,求当t=0.5时系统的矩阵指数及状态响应; 矩阵指数:A=[0,1;-2,-3]; expm(A*0.5)状态响应:x0=[1;-1];x=expm(A*0.5)*x0(选作)(2)1()u t =,()000x ⎡⎤=⎢⎥⎣⎦,绘制系统的状态响应及输出响应曲线; 程序: A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0;G=ss(A,B,C,D);[y,t,x]=step(G);figure(1);plot(t,x) ; %状态响应:figure(2);plot(t,y);%输出响应:(选作)(3)1cos 3t u e t -=+,()000x ⎡⎤=⎢⎥⎣⎦,绘制系统的状态响应及输出响应曲线; 程序:A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0;t=[0:.04:4];u=1+exp(-t).*cos(3*t);G=ss(A,B,C,D);[y,t,x]=lsim(G,u,t);figure(1);plot(t,x) %状态响应:figure(2);plot(t,y) %输出响应:(选作)(4)0u =,()102x ⎡⎤=⎢⎥⎣⎦,绘制系统的状态响应及输出响应曲线; 程序:A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0;t=[0:.04:7];u=0;x0=[1;2];G=ss(A,B,C,D);[y,t,x]=initial(G,x0,t);figure(1);plot(t,x) %状态响应:figure(2);plot(t,y)%输出响应:(5)在余弦输入信号和初始状态()101x ⎡⎤=⎢⎥⎣⎦下的状态响应曲线。

用MATLAB分析状态空间模型

用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中使用状态空间模型进行设计

在MATLAB中使用状态空间模型进行设计MATLAB是一种功能强大的计算机工具,可以用于各种科学计算、数据可视化和算法开发等任务。

在控制系统设计中,MATLAB也是一个重要的工具,可以用来建立和分析控制系统模型。

其中,状态空间模型是一种常用的表示方法,可以描述系统的动态行为和状态变化。

状态空间模型是一种数学模型,用一组微分方程描述系统的动态行为。

它通过将系统内部的状态变量以及输入和输出变量进行关联,来描述系统的演化过程。

状态空间模型可以用矩阵形式表示,这种表示方法直观而且方便进行计算。

在MATLAB中,可以使用StateSpace类来构建状态空间模型。

StateSpace类可以接受系统的系数矩阵作为输入,然后根据这些系数矩阵构建一个状态空间模型对象。

这个对象可以用来进行模型分析、设计和模拟等操作。

下面我们将介绍一些常用的MATLAB函数和命令,帮助读者了解如何在MATLAB中使用状态空间模型进行设计。

首先,我们可以使用`ss`函数来创建一个状态空间模型对象。

这个函数可以接受系统的系数矩阵作为输入,然后返回一个StateSpace对象。

例如,我们可以使用如下命令创建一个二阶系统的状态空间模型:```matlabA = [0 1; -1 -1];B = [0; 1];C = [1 0];D = 0;sys = ss(A, B, C, D);```在上述代码中,矩阵A、B、C和D分别表示系统的状态方程、输入矩阵、输出矩阵和直接传递矩阵。

通过使用`ss`函数,我们可以将这些矩阵传递给StateSpace对象,并得到一个表示系统的状态空间模型对象sys。

接下来,我们可以使用MATLAB提供的函数和方法来对状态空间模型进行各种操作。

例如,我们可以使用`tf`函数将状态空间模型转换为传输函数模型。

传输函数模型是一种常用的控制系统表示方法,可以用来分析系统的频率响应和稳定性等特性。

下面是一个将状态空间模型转换为传输函数模型的示例代码:```matlabtf_sys = tf(sys);```在上述代码中,我们使用`tf`函数将状态空间模型sys转换为传输函数模型tf_sys。

状态空间综合实验报告(3篇)

状态空间综合实验报告(3篇)

第1篇一、实验目的本次实验旨在通过MATLAB软件,掌握状态空间模型的基本概念,包括状态变量、状态空间、状态方程、输出方程等。

通过实验,学会构建状态空间模型,进行状态空间变换,求解状态转移矩阵,分析系统的可控性和可观测性,并实现系统的控制律设计。

二、实验内容1. 状态空间模型的构建与状态空间变换2. 状态转移矩阵的求解3. 系统的可控性和可观测性分析4. 系统的控制律设计三、实验步骤1. 构建状态空间模型以一个简单的二阶系统为例,其传递函数为:\[ G(s) = \frac{1}{s^2 + 2s + 2} \]根据传递函数,我们可以得到系统的状态空间模型如下:\[ \begin{cases}\dot{x}_1 = x_2 \\\dot{x}_2 = -x_1 - x_2\end{cases} \]其中,\( x_1 \) 和 \( x_2 \) 分别为系统的状态变量。

2. 状态空间变换为了方便分析系统的可控性和可观测性,我们需要对状态空间模型进行对角化。

通过求解特征值和特征向量,我们可以得到对角化后的状态空间模型:\[ \begin{cases}\dot{x}_1 = -2x_1 \\\dot{x}_2 = -2x_2\end{cases} \]其中,\( \lambda_1 = \lambda_2 = -2 \) 为系统的特征值。

3. 状态转移矩阵的求解根据状态空间模型,我们可以求解状态转移矩阵 \( P \):\[ P = e^{At} \]其中,\( A \) 为系统的状态矩阵。

4. 系统的可控性和可观测性分析通过计算系统的可控性和可观测性矩阵,我们可以判断系统的可控性和可观测性。

- 可控性矩阵 \( C \):\[ C = \begin{bmatrix}B & AB\end{bmatrix} \]- 可观测性矩阵 \( C^T \):\[ C^T = \begin{bmatrix}C^T & C^T A\end{bmatrix} \]通过计算 \( C \) 和 \( C^T \) 的秩,我们可以判断系统的可控性和可观测性。

MATLAB在 状态空间分析中的应用

MATLAB在 状态空间分析中的应用
自动控制原理
MATLAB在状态空间分析中的应用
1.1 建立状态空间模型
利用MATLAB提供的ss函数,可以建立系统的状态空间模型;利用tf2ss函数, 可以将系统的传递函数转换为状态空间表达式,它们在MATLAB中的调用格式分别 为
sys=ss(A,B,C,D) [A,B,C,D]=tf2ss(num,den)
1.3 求解极点配置问题
针对单输入系统和多输入系统,MATLAB分别提供了acker函数和place函数, 用来求解系统的状态反馈增益矩阵K。其中acker函数多用于求解多重极点配置问 题,但只适用于10阶以下的单输入系统,其调用格式如下。
K=acker(A,B,P) 其中,K为状态反馈增益矩阵;A,B分别为系统矩阵和输入矩阵;P为期望闭环 极点组成的向量。
运行结果为
A=[-3,-4,-2;1,0,0;0,1,0] B=[1,0,0] C=[2,5,7] D=0
因此,该系统等效的状态空间表达式为
其中
X AX BU Y CX
x1
3 4 2
1
X
x2

A
1
0
0

B 0 , C 2
5
7
x3
0 1 0
0
1.2 判断系统的能控性和能观性
利用MATLAB提供的ctrb函数和obsv函数,可求取线性定常系统的能控性矩 阵M和能观性矩阵N,然后再用rank函数求取矩阵的秩,并与n比较后来判别系统 的能控性和能观性。各函数的调用格式分别如下。
M=ctrb(A,B) N=obsv(A,C) nc=rank(M) no=rank(N)
【例 9-12】设控制系统的状态空间表达式为
运行结果为 K=[5 7.33 5]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四 用MATLAB 求解状态空间模型
1、实验设备
MATLAB 软件
2、实验目的
① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数;
② 通过编程、上机调试,进行求解。

3、实验原理说明
Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有:
初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。

数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。

4、实验步骤
① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。

② 在MATLAB 界面下调试程序,并检查是否运行正确。

习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。

Matlab 程序如下:
A=[0 1; -2 -3];
B=[]; C=[]; D=[];
x0=[1; 2];
sys=ss(A,B,C,D);
[y,t,x]=initial(sys,x0,0:5);
plot(t,x)
0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦
x x x
习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。

并计算该系统的单位阶跃状态响应表达式。

Matlab 程序如下:
A=[0 1; -2 -3];
B=[0; 1]; C=[]; D=[];
x0=[1; 2];
sys=ss(A,B,C,D);
[u t]=gensig('square',3,10,0.1)
0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦
x x x
[y,t,x] = lsim(sys,u,t,x0)
plot(t,u,t,x);
(注:文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)。

相关文档
最新文档