实验八MATLAB状态空间分析报告

合集下载

线性系统理论Matlab实践仿真报告

线性系统理论Matlab实践仿真报告

线性系统理论Matlab实验报告1、本题目是在已知状态空间描述的情况下要求设计一个状态反馈控制器,从而使得系统具有实数特征根,并要求要有一个根的模值要大于5,而特征根是正数是系统不稳定,这样的设计是无意义的,故而不妨设采用状态反馈后的两个期望特征根为-7,-9,这样满足题目中所需的要求。

(1)要对系统进行状态反馈的设计首先要判断其是否能控,即求出该系统的能控性判别矩阵,然后判断其秩,从而得出其是否可控;判断能控程序设计如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];Qc=ctrb(A,B)Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200Rc=rank(Qc)Rc =2Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200得出结果能控型判别矩阵的秩为2,故而该系统是完全可控的,故可以对其进行状态反馈设计。

(2)求取状态反馈器中的K,设的期望特征根为-7,-9;其设计程序如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];P=[-7 -9];k=place(A,B,P)k =1.0e+003 *-0.0200 9.00000.0072 -0.4500程序中所求出的k即为所求状态反馈控制器的状态反馈矩阵,即由该状态反馈矩阵所构成的状态反馈控制器能够满足题目要求。

2、(a)要求求该系统的能控型矩阵,并验证该系统是不能控的。

设计程序:>> A=[0 1 0 0 0;-0.1 -0.5 0 0 0;0.5 0 0 0 0;0 0 10 0 0;0.5 1 0 0 0];>> B=[0;1;0;0;0];>> C=[0 0 0 1 0];>> Qc=ctrb(A,B)Qc =0 1.0000 -0.5000 0.1500 -0.02501.0000 -0.5000 0.1500 -0.0250 -0.00250 0 0.5000 -0.2500 0.07500 0 0 5.0000 -2.50000 1.0000 0 -0.1000 0.0500>> Rc=rank(Qc)Rc =4从程序运行的结果可得,系统能控型判别矩阵的秩为4,而系统为5阶系统,故而就验证了该系统为不可控的。

实验八matlab状态空间分析

实验八matlab状态空间分析

实验八 线性系统的状态空间分析§8.1 用MATLAB 分析状态空间模型1、状态空间模型的输入线性定常系统状态空间模型x Ax Buy Cx Du =+=+将各系数矩阵按常规矩阵形式描述。

[][][]11121120101;;;n n n nn n n A a a a a a a B b b b C c c c D d ====在MATLAB 里,用函数SS()来建立状态空间模型(,,,)sys ss A B C D =例8.1 已知某系统微分方程22d d 375d d y yy u t t ++=求该系统的状态空间模型。

解:将上述微分方程写成状态空间形式0173A ⎡⎤=⎢⎥--⎣⎦,01B ⎡⎤=⎢⎥⎣⎦[]50C =,0D =调用MATLAB 函数SS(),执行如下程序% MATLAB Program example 6.1.mA=[0 1;-7 -3];B=[0;1];C=[5 0];D=0;sys=ss(A,B,C,D)运行后得到如下结果a =x1 x2x1 0 1x2 -7 -3b =u1x1 0x2 1c =x1 x2y1 5 0d =u1y1 0Continuous-time model.2、状态空间模型与传递函数模型转换状态空间模型用sys表示,传递函数模型用G表示。

G=tf(sys)sys=ss(G)状态空间表达式向传递函数形式的转换G=tf(sys)Or [num,den]=ss2tf(A,B,C,D)多项式模型参数[num,den]=ss2tf(A,B,C,D,iu)[z,p,k]=ss2zp(A,B,C,D,iu)零、极点模型参数iu用于指定变换所需的输入量,iu默认为单输入情况。

传递函数向状态空间表达式形式的转换sys=ss(G)or [A,B,C,D]=tf2ss(num,den)[A,B,C,D]=zp2ss(z,p,k)例8.211122211220.560.050.03 1.140.2500.1101001x x u x x u y x y x -⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦试用矩阵组[a ,b ,c ,d]表示系统,并求出传递函数。

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

状态空间模型分析实验报告
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对状态空间模型进行分析(一)状态空间模型的引入
状态空间模型是一种概率统计模型,它利用了状态变量和观测变量来描述系统的特性,可以用来模拟复杂的或不可观测的动态过程。

状态空间模型的核心思想是,将动态系统的状态变量和观测变量分别建模,并用一组数学方程表示整个系统。

这样,状态空间模型可以更好地揭示动态系统的特性,从而更好地进行控制和优化。

(二)状态空间模型的形式
状态空间模型由两部分组成:状态转移方程和观测方程。

状态转移方程用于描述系统的状态变量的动态变化,而观测方程则用于表示系统的观测变量的变化趋势。

状态转移方程可以表示为:
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实验报告总结

matlab实验报告总结1.求一份matlab的试验报告计算方法试验报告3【实验目的】检查各种数值计算方法的长期行为【内容】给定方程组x'(t)=ay(t),y'(t)=bx(t), x(0)=0, y(0)=b的解是x-y 平面上的一个椭圆,利用你已经知道的算法,取足够小的步长,计算上述方程的轨道,看看那种算法能够保持椭圆轨道不变。

(计算的时间步长要足够多)【实验设计】用一下四种方法来计算:1. Euler法2. 梯形法3. 4阶RK法4. 多步法Adams公式【实验过程】1. Euler法具体的代码如下:clear;a=2;b=1;A=[0 a; -b0];U=[];u(:,1)=[0;b];n=1000000;h=6*pi/n;fori=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; u(:,i+1)=u(:,i)+h*A*u(:,i);endt=1:n+1;subplot(1, 2,1);plot(1:n,delta);gridon;subplot(1,2,2);plot(u(1,:),u(2,:));gridon;max(abs(delta-ones(1,length(delta))));结果如下:2. 梯形法具体的代码如下:clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=300;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;v1=u(:,i)+h*A*u(:,i);v2=u(:,i)+h*A*(u(:,i)+v1)/2;1u(:,i+1)=u(:,i)+h*A*(u(:,i)+v2)/2;endt=1:n+1;sub plot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下 3. 4阶RK法clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=70;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;k1=A*u(:,i); k2=A*(u(:,i)+h/2*k2); k3=A*(u(:,i)+h*k3); k4=A*(u(:,i)+h*k3); u(:,i+1)=u(:,i)+h/6*(k1+2*k2+2*k3+k4);endt=1:n+1 ;subplot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下:4. 多步法Adams公式clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=200;h=6*pi/n;u(:;2)=u(u,1)+h*A*u(:,1);u(:;3)=u(u,2)+h/2*A*(3*u(:,2)-u(:,1));u(:;4)=u(u,3)+h/12*A*(23*u(:,3)-16*u(:,2)+5*u(:, 1)); delta(1)=((u(1,1)/a)^2+(u(2,1)/b^2)^0.5 delta(2)=((u(1,2)/a)^2+(u(2,2)/b^2)^0.5delta(3)=((u(1,3)/a)^2+(u(2,3)/b^2)^0.5for i=4:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;u(:,i+1)=u(:,i)+h/24*A*(55*u(:,i)-59*u(:,i-1)+37 *u(:,i-1)+37*u(:,i-2)-9*u(:,i-3));endt=1:n+1;sub plot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下:【实验分析】通过这几种方法对比,发现最为稳定的是多步法Adams公式和4阶RK法,其次是梯形法,而欧拉法最为不稳定。

Matlab实验报告8

Matlab实验报告8

三、实验内容及要求1、利用help 命令学习上述函数命令的用法,自行练习。

2、已知一阶系统传递函数为**,输入为正弦信号,求输出。

编写程序,将输入和响应曲线画于同一图上。

num=[1];den=[1 1];sys=tf(num,den);t=0:0.01:10;u=sin(t);[y,x]=lsim(sys,u,t)Plot(t,y,t,u) ;gridlegend('输入u=sin(t ','响应y')012345678910-1-0.8-0.6-0.4-0.20.20.40.60.81输入u=sin(t)响应y3、已知二阶系统传递函数为**,当wn =1 时,试计算当阻尼比值从0.1 到1 时二阶系统的阶跃响应。

编写程序,将响应曲线画于同一图上,并加上标注。

clc;clear;t=linspace(0,20,200);omega=1;omega2=omega^2;zuni=[0.1,0.3,0.5,0.7,0.1];num=omega2;for k=1:5den=[1 2*zuni*omega omega2];sys=tf(num,den);y(k)=step(sys,t);endfigure;plot(t,y(:,1:5));grid;gtext('zuni=0.1');gtext('zuni=0.3');gtext('zuni=0.5');gtext ('zuni=0.7');gtext('zuni=1');clc;clear;x=0:0.01:20;omega=1;omega2=omega*omega;num=omega2;for zuni=0.1:0.1:1;den=[1 2*zuni*omega omega2];sys=tf(num,den);[y,t]=step(sys,x);plot(t,y);grid;hold onend;4、二阶系统为**,编写程序,求系统的根、阻尼比、无阻尼震荡频率和响应曲线,计算(注意不是从响应图上读出)出峰值、峰值时间和过渡时间,并与理论公式计算值比较。

用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 实验报告Matlab 实验报告引言:Matlab(Matrix Laboratory)是一种强大的科学计算软件,它为科学家、工程师和研究人员提供了一个强大的计算环境。

本实验报告旨在介绍我对Matlab的实验结果和使用体验,以及对其优点和局限性的思考。

一、Matlab的基本功能和特点Matlab是一种高级编程语言和开发环境,它具有广泛的数学和工程计算功能。

通过Matlab,我可以进行矩阵运算、数值计算、数据可视化、算法开发等一系列操作。

Matlab的语法简洁易懂,可以快速实现复杂的计算任务。

此外,Matlab还提供了大量的工具箱,如信号处理、控制系统、图像处理等,使得各种领域的科学研究和工程应用变得更加便捷。

二、实验结果与应用案例在本次实验中,我选择了一个经典的数值计算问题——求解非线性方程。

通过Matlab的数值计算能力,我可以使用不同的迭代方法来求解方程的根。

在实验中,我使用了牛顿迭代法、二分法和割线法来求解方程。

通过对比这些方法的收敛速度和精度,我得出了不同方法的优缺点。

在实际应用中,Matlab可以广泛应用于信号处理、图像处理、数据分析等领域。

例如,在信号处理中,我可以使用Matlab的信号处理工具箱来进行滤波、频谱分析等操作。

在图像处理中,我可以利用Matlab的图像处理工具箱进行图像增强、边缘检测等操作。

这些应用案例充分展示了Matlab在科学计算和工程应用中的重要性和灵活性。

三、Matlab的优点1. 强大的计算功能:Matlab提供了丰富的数学和工程计算函数,可以高效地进行复杂的计算任务。

2. 简洁的语法:Matlab的语法简洁易懂,使得编程变得更加高效和便捷。

3. 丰富的工具箱:Matlab提供了大量的工具箱,覆盖了各种领域的科学计算和工程应用需求。

4. 可视化能力强:Matlab提供了丰富的绘图函数,可以直观地展示数据和计算结果。

四、Matlab的局限性1. 高昂的价格:Matlab是一款商业软件,其价格较高,对于个人用户而言可能不太容易承受。

MATLAB综合性实验报告8

MATLAB综合性实验报告8

一、实验目的:1.学会运用Matlab解决实际问题2.进一步掌握Matlab的一些基本操作3.通过范例体会Matlab的初步建模过程4学会用做动画二.实验仪器、设备或软件:电脑、MATLAB软件三.实验内容:1.已知前两年的猪肉的产量和猪肉的价格分别为:39吨,28吨,12元/公斤,17元/公斤,根据前一年的猪肉价格影响后一年猪肉产量当年猪肉产量影响当年猪肉价格的线性关系,编写程序,利用动画原理画出前十年猪肉的产量——价格的动态图形。

(参数设置为,c1=39,c2=28,c3=36,r1=12,r2=17,k=16)。

2.在地面上建有一座圆柱形水塔,水塔内部的直径为d,并且在地面处开了一个高为H的小门.现在要对水塔内部进行维修施工,施工方案要求把一根长为l(l>d)的水管运到水塔内部.请问水塔的门高H多高时,才有可能成功地把水管搬进水塔内。

四.实验记录:1.蛛网模型:实验代码:clear%c1为产量1, c2为产量2, c3为产量3, r1为%肉价1, r2为肉价2, k为K年后产量与肉价%是否稳定c1=39;c2=28;c3=36;hold offr1=12;r2=17;k=16;a1=[c1 1;c2 1];%系数矩阵b1=[r1,r2]';%列向量a2=[r1 1;r2 1];b2=[c2,c3]';a=a1\b1;b=a2\b2;%x0(1)=c1;for n=1:30y0(n)=a(1)*x0(n)+a(2); %a(1)a(2)为矩阵元素的引用,下行类似x0(n+1)=b(1)*y0(n)+b(2);x(n)=x0(n);y(n)=x0(n+1);endplot(x,y0,'-g',y,y0,'-b')hold onm=moviein(100);for n=1:kfor j=1:30t1=x0(n)+(j-1)*(x0(n+1)-x0(n))/30;t2=x0(n)+j*(x0(n+1)-x0(n))/30;if t2<t1t=t1;t1=t2;t2=t;%这样做方便画图elseendt=t1:0.01:t2;plot(t,y0(n),'.r')%划横线t1=y0(n)+(j-1)*(y0(n+1)-y0(n))/30;t2=y0(n)+j*(y0(n+1)-y0(n))/30;if t2<t1t=t1;t1=t2;t2=t;elseendt=t1:0.01:t2;plot(x(n+1),t,'.r')%划竖线endm(:,n)=getframe;endmovie(m,20)实验结果:ans =Columns 1 through 639.0000 28.0000 36.0000 30.1818 34.4132 31.3358 Columns 7 through 1233.5739 31.9462 33.1300 32.2691 32.8952 32.4398 Columns 13 through 1832.7710 32.5302 32.7053 32.5779 32.6706 32.6032 Columns 19 through 2432.6522 32.6166 32.6425 32.6236 32.6374 32.6274 Columns 25 through 3032.6346 32.6294 32.6332 32.6304 32.6324 32.6310 Column 3132.6320实验图像:2.水塔模型:实验代码:Clearfunction x=lt523(l,d,h) k1=0;a=0l=7;d=3ymax=0;k2=0;b=pi/2;h=3;while (b-a)>10^(-2)k2=k2+1;m=0;a=0;if k1==0n=ceil(b/h)-1 elsen=ceil(b/h);endfor i=1:n+1;x(i)=a+(i-1)*(b-a)/n;y(i)=l*sin(x(i))-d*tan(x(i));endfor i=1:nif y(i)>ymaxymax=y(i);a=x(i-1);else y(i)<ymaxb=x(i);endendm=m+1;k1=k1+1;h=(b-a)/5;endabx=(a+b)/2t=0:0.01:1.35y1=l*sin(t)-d*tan(t);plot(t,y1,'-b')方法:2syms h xh=8*sin(x)-2*tan(x);d1=0;d2=pi/2;d0=(d1+d2)/2;d=0.03;a=subs(h,x,d1);b=subs(h,x,d2);c=subs(h,x,d0);for n=d1:d:d2if (((c-a)/(d0-d1))*((b-c)/(d2-d0)))<0 d1=d1+d; d2=d2-d; d0=(d1+d2)/2;a=subs(h,x,d1);b=subs(h,x,d2);c=subs(h,x,d0);endendd0hold onaxis([0,pi/2,-5,5])x=0:0.05:pi/2;plot(x,8*sin(x)-2*tan(x),'-b')实验运行结果:五、实验总结:通过做此实验,让我对MATLAB有更进一步的了解,学会怎样才能正确运用MATLAB求解实际问题,了解如何利用数学模型去解释和分析社会经济问题,特别是这个典型经济问题的求解。

MATLAB实验报告(8个实验)

MATLAB实验报告(8个实验)

MATLAB实验报告(8个实验)四川师范⼤学MATLAB语⾔实验报告1系级班年⽉⽇实验名称:Intro, Expressions, Commands姓名学号指导教师成绩1ObjectiveThe objective of this lab is to familiarize you with the MATLAB program development environment and to develop your first programs in this environment.2Using MATLAB2.1Starting MATLABLogon to your computer and start MATLAB by double-clicking on the icon on the desktop or by using the Start Programs menu. MATLAB Desktop window will appear on the screen.The desktop consists of several sub-windows. The most important ones are:●Command Window (on the right side of the Desktop) is used to do calculations,enter variables and run built-in and your own functions.●Workspace (on the upper left side) consists of the set of variables (arrays) createdduring the current MATLAB session and stored in memory.●Command History (on the lower left side) logs commands entered in theCommand Window. You can use this window to view previously run statements, and copy and execute selected statements.You can switch between the Launch Pad window and the Workspace window using the menu tabs under the sub-window on the upper left side. Similarly, you can switch between the Command History and Current Directory windows using the menu tabs under the sub-window on the lower left side.2.2Executing CommandsYou can type MATLAB commands at the command prompt “>>” on the Command Window.For example, you can type the formula cos(π/6)2sin(3π/8) as>>(cos(pi/6) ^ 2) * (sin(3 * pi/8))Try this command. After you finish typing, press enter. The command will be interpreted and the result will be displayed on the Command Window.Try the following by observing how the Workspace window changes:>> a = 2; (M ake note of the usage of “;”)>> b = 3;>> c = a ^ 4 ? b ? 5 + pi ^3You can see the variables a, b and c with their types and sizes on the Workspacewindow, and can see the commands on the Command History window.Spend a few minutes to practice defining array variables (i.e. vectors and matrices)usingthe square bracket (“[ ]”) and colon (“:”) operators, and zeros() and ones() functions.>> ar =[ 1 2 3 4 5 ];>> br =[ 1 2 3 ;4 5 6 ];>> cr = [1 : 3 : 15];Set dr to rst 3 elements of ar.dr=ar(1:3);Set er to second row of br.er=br(2,:);Set ar to [dr er]. Find the number of elements of ar.ar=[dr er]; length(ar)2.3 Getting HelpThere are several ways to get help on commands and functions in MATLAB. First ofall you can use the Help menu. You can also use the “?” button. Try to findinformation on the plot function from the help index. Also try to get information onthe same function using the help command (i.e. type help plot). Finally, experimentwith the lookfor command. This command looks for other commands related to agiven keyword.2.4 Some Useful CommandsTry the following commands and observe their results:Which : Version and location infoClear : Clears the workspaceClc : Clears the command windowwho, whos : Lists content of the workspace3 ExercisesPlease solve the following problems in MATLAB. Do not forget to keep a diary ofyour commands and their outputs.(1) De?ne the variables x y and z as 7.6, 5.5 and 8.1, respective ly, and evaluate:578.422.52??? ??-x y xz(2) Compute the slope of the line that passes through the points (1,-2) and(5,8).(3) Quiz 1.1: 5(4)1.6 Exercises: 1.1, 1.4(5)2.15 Exercises: 2.6, 2.9, 2.114Quitting MATLABTyping quit on the command window will close the program. Do not forget to send your diary file and M-file to your TA. Do not forget to delete your ?les from the hard disk of the PC you used in the lab at the end of the lab session.四川师范⼤学MATLAB语⾔实验报告2系级班年⽉⽇实验名称:Programming, Relational and Logical Expressions姓名学号指导教师成绩1ObjectiveThe objective of this lab is to familiarize you with the MATLAB script files (M-files), subarrays, relational and logical operators.2Script FilesScript files are collections of MATLAB statements that are stored in a file. Instead of typing commands directly in the Command Window, a series of commands may be placed into a file and the entire file may be executed by typing its name in the Command Window. Such files are called script files that are also known as M-files because they have an extension of .m. When a script file is executed, the result is the same as it would be if all of the commands had been typed directly into the Command Window. All commands and script files executed in the Command Window share a common workspace, so they can all share variables in the workspace. Note that if two script files are executed successively, the second script file can use the variables created by the first script file. In this way, script files can communicate with other script files through the data left behind in the workspace. An Edit Window is used to create new M-files or to modify existing ones. The Edit Window is a programming text editor, with the features of MATLAB language highlighted in different colors. You can create a new M-file with the File/New/M-file selection and you can open an existing M-file with the File/Open selection from the desktop menu of MATLAB. (1)Create a new working directory under the current directory and change the currentdirectory to …TA?s suggest?.3SubarraysIt is possible to select and use subsets of MATLAB arrays. To select a subset of an array, just include a list of the elements to be selected in the parentheses after the array name. MATLAB has a special function named end that is used to create array subscripts. The end function always returns the highest value taken on by a givensubscript. It is also possible to use subarrays on the left-hand side of an assignmentstatement to change only some of the values in an array. If values are assigned to asubarray, only those values are changed but if values are assigned to an array, theentire contents of the array are replaced by the new values.(1) Define the following 5 x 5 array arr1 in MATLAB.----=2274235421209518171651413215111012844563311arr(2) Write a MATLAB statement to select a subset of arr1 and return the subarraycontaining the values as shown.=22745456311arrarr11=arr1([1,5],[2 4 5]);(3) Write two MATLAB statements to select the last row and last column of arr1,separately.arr12=arr1(5,:);或arr12=arr1(end,:); arr13=arr1(:,end);或 arr13=arr1(:,5);(4) Write MATLAB statements to obtain the following array from arr1.-=2257462335432112arrarr2=arr1([1 5],:)';4 Relational and Logical OperatorsRelational and logical operators are the two types of operators that produce true/falseresults in MATLAB programs. MATLAB interprets a zero value as false and any nonzero value as true. Relational operators ( ==, =,>,>=,<,<=) are operators with two operands that produce either a true (1) or a false (0) result, depending on the values of the operands. Relational operators can be used to compare a scalar value with an array. They can also be used to compare two arrays or two strings only if they have the same size. Be careful not to confuse the equivalence relational operator ( == ) with the assignment operator ( = ). Logic operators ( &, |, xor, ~ ) are operators with one ortwo operands that yield a logical result such as 0 or 1. There are three binary logic operators: AND (& ), OR ( |), and exclusive OR ( xor ); and one unary operator: NOT ( ~ ). In the hierarchy of operations, logic operators are evaluated after allarithmetic and relational operators have been evaluated. The operator is evaluated before other logic operators.(1) Define the following 4 x 5 array arr4 in MATLAB.------=212343212343212543214arr(2) Write an expression using arr4 and a relational operator to produce the following result.=110001110011110111115arrarr5=arr4>0;(3) Write an expression using arr4 and a relational operator to produce the following result.=010000010000010000016arrarr6=arr4==1;(4) Write a MATLAB program which will generate an (n-1)x(n-1) matrix from agiven nxn matrix which will be equal to given matrix with first row and firstcolumn deleted.arr44=rand(5); arr444=arr35(2:end,2:end);(5) Generalize your program above so that the program should ask the row and column numbers to be deleted and then generate new (n-1)x(n-1) matrix.n=input('input n:');matrixn=rand(n)delrow=input('input row numbers to be deleted:');delcolumn=input('input column numbers to be deleted:');matrixn_1=matrixn([1:delrow-1 delrow+1:end], [1:delcolumn-1 delcolumn+1:end]) (6) Quiz 3.1 (P88)5 Quitting MATLABTyping quit on the command window will close the program. Do not forget to send your diary file and M-file to your TA.Do not forget to delete your files from the hard disk of the PC you used in the lab at the end of the lab session.四川师范⼤学MATLAB 语⾔实验报告3系级班年⽉⽇实验名称:Branches and Loops, Logical Arrays.姓名学号指导教师成绩 1 ObjectiveThe objective of this lab is to familiarize you with the MATLAB Branches and Loops, Logical Arrays.2 ExercisesDo not forget to add sufficient documentation and proper indentation to all programs you write.(1) Write a program that calculates follow equation with for and while loop, and writea program without loop.63263022212+++==∑= i i K% for loopk1=0;for ii=1:64k1=k1+2^(ii-1);end% while loopk2=0;n=0;while n>=0&n<64k2=k2+2^n;n=n+1;end% without loopa=0:63;b=2.^a;K3=sum(b);(2) Write a program that accepts a vector of integers as input and counts the numberof integers that are multiples of 3 in that vector. You can assume that the inputcontains only integer values. An example run of your program can be as follows:Enter a vector of integers: [ 1 3 2 8 0 5 6 ]The number of multiples of 3 is 2(3) The root mean square is a way for calculating a mean for a set of numbers. The rmsaverage of a series of numbers is given as:∑==N i i xN rmsaverage 121Write a program that will accept an arbitrary number of input values and calculatethe rmsaverage of the numbers. The program should ask the user for the numberof values to be entered. Test your program with 4 and 10 set of numbers.% The root mean square is a way for calculating a mean for a set of numbers% Initializesum_x2=0;% Get the number of points to input.n=input('Enter number of points:');% Loop to read input valuesfor ii=1:n% Read in next valuex=input('Enter value:');% Calculate square sumssum_x2=sum_x2+x^2;end% Now calculate root mean squareroot_ms=sqrt(sum_x2/n);% Tell userfprintf('The number of data points is: %d\n',n);fprintf('The root mean square of this data set is: %f\n',root_ms);(4) 3.8 exercises:3.5(5) 4.7Exercises: 4.1 4.23 Quitting MATLABTyping quit on the command window will close the program. Do not forget to sendyour M-file to your TA.Do not forget to delete your files from the hard disk of the PC you used in the lab at the end of the lab session.四川师范⼤学MATLAB语⾔实验报告4系级班年⽉⽇实验名称:MATLAB/SIMULINK package姓名学号指导教师成绩1Objective●To learn how to use MATLAB/SIMULINK package●To learn how to estimate performance parameters from time-domain data2SIMULINK BasicBasic steps(1)Click on the MATLAB button to start MATLAB.(2)Once MATLAB has started up, type simulink (SMALL LETTERS!) at theMATLAB prompt (>>) followed by a carriage return (press the return key). A SIMULINK window should appear shortly, with the following icons: Sources, Sinks, Discrete, Linear, Connections, Extras.(3)Next, go to the File menu in SIMULINK window and choose New in order tobegin building the block diagram representation of the system of interest.(4)Open one or more of the block libraries and drag the chosen blocks into the active.(5)After the blocks are placed, draw lines to connect their input and output ports bymoving the mouse over a port and drag using the left button. To make a line witha right angle in it, release the button where you want the corner, then click on theend of the line and drag to create next segment. To add a second line that runs off of an existing line click the right mouse on an existing line and drag it.(6)Save the system by selecting Save from the File menu.(7)Open the blocks by double-clicking and change some of their internal parameters.(8)Adjust some simulation parameters by selecting Parameters from the Simulationmenu. The most common parameter to change is Stop Time that defines the length of time the simulation will run.(9)Run the simulation by selecting Start from the Simulation menu. You can stop asimulation before completing by selecting Stop from the Simulation menu. (10)View the behavior of the system by attaching Scope blocks to the variables ofinterest, or by using To Workspace blocks to send data to the MATLAB workspace where you can plot the results using standard MATLAB commands.3Exercises(1)Your TA has shown you how to observe and print signals from the scope. Try thisout by printing out the input signal, which should be a -1V to 1V square wave with frequency 0.1 Hz. Note the peak-to-peak voltage difference of this signal.Note to write key blocks parameters.(2) Write a Simulink model to calculate the following differential equation,0)1(222=+--x dt dx x dt x d µInitialized 1)0(=x ,0)0(=dt dx 。

matlab实验报告总结

matlab实验报告总结

matlab实验报告总结Matlab实验报告总结引言:Matlab是一种广泛应用于科学计算和工程领域的高级编程语言和环境。

在这个实验报告总结中,我将回顾我在使用Matlab进行实验时的经验和收获。

通过这些实验,我学到了很多关于Matlab的功能和应用,同时也提高了自己的编程和数据分析能力。

一、Matlab基础知识的学习和应用在实验中,我首先学习了Matlab的基础知识,包括变量的定义、矩阵和数组的操作、函数的使用等。

通过这些基础知识的学习,我能够更加熟练地使用Matlab进行数值计算和数据处理。

例如,我学会了如何定义一个矩阵,并进行矩阵的加减乘除运算,这对于解决线性方程组或者进行矩阵变换非常有帮助。

二、数据可视化与图像处理Matlab具有强大的数据可视化功能,通过使用Matlab的绘图函数,我可以将数据以图表的形式直观地展示出来。

在实验中,我使用Matlab绘制了各种类型的图表,包括折线图、柱状图、散点图等。

这些图表不仅美观,而且能够更好地帮助我理解和分析数据。

此外,我还学习了Matlab的图像处理工具箱,通过使用这些工具,我可以对图像进行滤波、增强、分割等操作,从而得到更好的图像效果。

三、数值计算和优化算法Matlab提供了丰富的数值计算和优化算法,通过使用这些算法,我可以解决各种数学问题和优化问题。

在实验中,我学习了如何使用Matlab进行数值积分、数值微分、方程求解等操作。

同时,我还学习了一些常用的优化算法,如遗传算法、粒子群算法等。

这些算法在实际问题中具有广泛的应用,通过使用Matlab,我能够更加高效地解决这些问题。

四、信号处理与模拟仿真Matlab在信号处理和模拟仿真方面也有很强的功能。

通过使用Matlab的信号处理工具箱,我可以对信号进行滤波、降噪、频谱分析等操作。

这对于处理实际采集到的信号数据非常有帮助。

同时,我还学习了如何使用Matlab进行模拟仿真,通过建立数学模型和仿真算法,我可以模拟和分析各种实际系统的行为。

利用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分析状态空间模型

精品课件!
精品课件!
线性非奇异变换 • sys1=ss(A,B,C,D) • sys2=ss2ss(sys1,T) • 或[AA,BB,CC,DD]=ss2ss(A,B,C,D,T)
y

0 0
0 2
0 0
1 2 x
可由下列语句输入到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)
0
1
0
x


1

u
0 0 0 1 0
0 0 5 0 2
y 1 0 0 0 x
可由下列语句得出系统相应的传递函数模 型
• >> 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)
bm1s bm an1s an
1、传递函数的输入 将传递函数模型输入到MATLAB环境中
>>num=[b0,b1,…,bn]; >>den=[1,a1,a2,…,an]; 排列方式:从右到左,不够的地方补零。 构造对应的传递函数
>>G=tf(num,den)

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

(完整word)Matlab实验报告

(完整word)Matlab实验报告

实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境.2.学习使用图形函数计算器命令funtool及其环境。

二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format 命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。

求下列函数的符号导数(1)y=sin(x);(2) y=(1+x)^3*(2-x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1—x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x-1)/(2*x+3); (2) y=exp(x);(3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x-3)/(x—4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x—3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。

从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2)y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(—x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x); (2) x/(1+x^2); (3) 1/(x—1)/(x—2); 求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2)(3) y=sin(u) u=asin(x) (4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。

基于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实验报告_8

MATLAB实验报告_8

实验一基本操作和简单语句输入一、实验环境计算机MATLAB软件二、实验目的1.熟悉MA TLAB的命令窗口。

2、掌握MATLAB的一些基本操作, 能够进行一般的数值计算。

3.实现语句的重调和修改。

三、实验内容与步骤1.启动MA TLAB2.观察MA TLAB窗口的各个组成部分(1)了解菜单栏各窗口项的功能, 用鼠标打开MA TLAB的各个菜单, 在状态栏里显示当前鼠标所指的菜单项的含义。

(2)用鼠标指向常用工具栏的每个工具按钮, 了解各工具按钮的含义。

3.命令窗口的打开和关闭(1)查看菜单窗口中有哪些菜单命令。

(2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b, 然后回车, 查看命令显示结果。

>> a=3;b=4;y=a*b+a/b,y =12.7500(3)利用MA TLAB中编辑命令时常用的按键功能, 调用上一个语句, 对它进行修改(如把分号改成逗号, 看运行结果), 并把运行结果复制到word中保存。

>> a=3,b=4,y=a*b+a/b,a =3b =4y =12.7500(4)关闭命令窗口。

(5)打开命令窗口。

4.使用MA TLAB帮助熟悉MATLAB的帮助系统, 通过帮助系统了解有关内容。

5、在命令窗口中输入demo, 将出现MA TLAB的演示窗, 通过演示窗, 对MATLAB的功能进行一次浏览。

四、练习1.计算y=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x), x=2, x=3时的值。

>> x=2;y=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)y =-4.4697>> x=3;y=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)y =10.38652.计算cos(pi/3)-sqrt(9-sqrt(2))>> cos(pi/3)-sqrt(9-sqrt(2))ans =-2.25423.已知: a=3,A=4,b=a^2,B=b^2-1,c=a+A-2*B,C=a+B+2*c, 求: C>> a=3;A=4;b=a^2;B=b^2-1;c=a+A-2*B;C=a+B+2*cC =-2234.复数z1=1+3*i,z2=1+2*i,z3=2*exp((pi/6)*i),求z=(z1*z2)/z3>> z1=1+3*i;z2=1+2*i;z3=2*exp((pi/6)*i);z=(z1*z2)/z3z =-0.9151 + 3.4151i实验二矩阵和数组的操作一、实验环境计算机MATLAB软件二、实验目的1.掌握矩阵和数组的一般操作, 包括创建、保存、修改和调用等。

用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仿真与实践第8章 线性系统状态空间分析

自动控制原理的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。

现代控制理论实验-状态空间的Matlab描述

现代控制理论实验-状态空间的Matlab描述

实验一 状态空间的Matlab 描述实验目的:1、 熟悉Matlab 中矩阵的基本输入与运算(包括加、减、乘、求逆、转置等运算);2、 熟练掌握利用Matlab 建立控制系统的数学模型及进行线性变换的方法;3、 掌握利用simulink 搭建控制系统的方法。

实验内容:1、 矩阵的基本输入与运算:给定两个矩阵,求其加、减、乘、逆阵(求取矩阵逆阵的函数为inv ())及转置,进行乘、逆阵运算时,注意行列限制。

2、 利用Matlab 建立系统的各种数学模型:A 、 传递函数模型1110111)()()(a s a s a s b s b s b s b s U s Y s W n n n m m m m ++++++++==---- 用以下命令建立传递函数模型:),(den num tf sys =],,,[01b b b num m m -= 表示传函分子向量,各元素为分子多项式中各项系数,阶次由高到低; ],,,,1[021a a a den n n --= 表示传函分母向量,各元素为分母多项式中各项系数,阶次由高到低。

注意:若多项式中有缺项,则向量中相应位置处系数为0;若为多输入-多输出系统,则i b 为r m ⨯实系数矩阵,num 的行数与输出变量的个数相等。

B 、 零极点增益模型∏∏==--=n j j m i i g ps z s K s W 11)()()( ),,(k p z zpk sys = ],,,[21m z z z z = 表示零点],,,[21n p p p p = 表示极点][g k k = 表示增益C 、 状态空间模型⎩⎨⎧+=+=DuCx y Bu Ax x ),,,(D C B A ss sys = 利用系统矩阵、输入矩阵、输出矩阵、直接传递矩阵即可建立系统的状态空间模型。

若直接传递矩阵为零矩阵,可使用),(r m zeros 来建立一个r m ⨯的零矩阵。

3、 在各种模型之间进行转换:A 、传递函数模型转换为零极点增益模型 ),(2],,[den num zp tf k p z =B 、零极点增益模型转换为传递函数模型 ),,(2],[k p z tf zp den num =C 、传递函数模型转换为状态空间模型 ),(2],,,[den num ss tf d c b a =D 、状态空间模型转换为传递函数模型 ),,,,(2],[i d c b a tf ss den num =最后一个参数要指出是第i 个输入到全部输出之间的传递函数模型E 、零极点增益模型转换为状态空间模型 ),,(2],,,[k p z ss zp d c b a =F 、状态空间模型转换为零极点模型 ),,,,(2],,[i d c b a zp ss k p z =最后一个参数要指出是第i 个输入到全部输出之间的传递函数模型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八 线性系统的状态空间分析§8.1 用MATLAB 分析状态空间模型1、状态空间模型的输入线性定常系统状态空间模型x Ax Bu y Cx Du=+=+ 将各系数矩阵按常规矩阵形式描述。

[][][]11121120101;;;n n n nn n n A a a a a a a B b b b C c c c D d ====在MA TLAB 里,用函数SS()来建立状态空间模型(,,,)sys ss A B C D =例8.1 已知某系统微分方程22d d 375d d y y y u t t++= 求该系统的状态空间模型。

解:将上述微分方程写成状态空间形式0173A ⎡⎤=⎢⎥--⎣⎦,01B ⎡⎤=⎢⎥⎣⎦[]50C =,0D =调用MATLAB 函数SS(),执行如下程序% MATLAB Program example 6.1.mA=[0 1;-7 -3];B=[0;1];C=[5 0];D=0;sys=ss(A,B,C,D)运行后得到如下结果a =x1 x2x1 0 1x2 -7 -3b =u1x1 0x2 1c =x1 x2y1 5 0d =u1y1 0Continuous-time model.2、状态空间模型与传递函数模型转换状态空间模型用sys 表示,传递函数模型用G 表示。

G=tf(sys)sys=ss(G)状态空间表达式向传递函数形式的转换G=tf(sys)Or [num,den]=ss2tf(A,B,C,D) 多项式模型参数[num,den]=ss2tf(A,B,C,D,iu)[z,p,k]=ss2zp(A,B,C,D,iu) 零、极点模型参数iu 用于指定变换所需的输入量,iu 默认为单输入情况。

传递函数向状态空间表达式形式的转换sys=ss(G)or [A,B,C,D]=tf2ss(num,den)[A,B,C,D]=zp2ss(z,p,k)例 8.211122211220.560.050.03 1.140.2500.1101001x x u x x u y x y x -⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ 试用矩阵组[a ,b ,c ,d]表示系统,并求出传递函数。

% MATLAB Program example 6.2.ma=[-0.56 0.05;-0.25 0];b=[0.03 1.14;0.11 0];c=[1 0;0 1];d=zeros(2,2);sys=ss(a,b,c,d)G1=tf(sys)G2=zpk(sys)运行后得到如下结果a =x1 x2x1 -0.56 0.05x2 -0.25 0b =u1 u2x1 0.03 1.14x2 0.11 0c =x1 x2y1 1 0y2 0 1d =u1 u2y1 0 0y2 0 0Continuous-time model.Transfer function from input 1 to output...0.03 s + 0.0055#1: ---------------------s^2 + 0.56 s + 0.01250.11 s + 0.0541#2: ---------------------s^2 + 0.56 s + 0.0125Transfer function from input 2 to output...1.14 s#1: ---------------------s^2 + 0.56 s + 0.0125-0.285#2: ---------------------s^2 + 0.56 s + 0.0125Zero/pole/gain from input 1 to output...0.03 (s+0.1833)#1: ----------------------(s+0.5367) (s+0.02329)0.11 (s+0.4918)#2: ----------------------(s+0.5367) (s+0.02329)Zero/pole/gain from input 2 to output...1.14 s#1: ----------------------(s+0.5367) (s+0.02329)-0.285#2: ----------------------(s+0.5367) (s+0.02329)例8.3 考虑下面给定的单变量系统传递函数3243272424()10355024s s s G s s s s s +++=++++ 由下面的MATLAB 语句直接获得状态空间模型。

>> num=[1 7 24 24];>> den=[1 10 35 50 24];>> G=tf(num,den);>> sys=ss(G)运行后得到如下结果:a =x1 x2 x3 x4x1 -10 -4.375 -3.125 -1.5x2 8 0 0 0x3 0 2 0 0x4 0 0 1 0b =u1x1 2x2 0x3 0x4 0c =x1 x2 x3 x4y1 0.5 0.4375 0.75 0.75d =u1y1 0Continuous-time model.3. 线性系统的非奇异变换与标准型状态空间表达式syst=ss2ss(sys,T)sys, syst 分别为变换前、后系统的状态空间模型,T 为非奇异变换阵。

[At,Bt,Ct,Dt]=ss2ss(A,B,C,D,T)(A,B,C,D)、(At,Bt,Ct,Dt )分别为变换前、后系统的状态空间模型的系数矩阵。

§8.2 利用MATLAB 求解系统的状态方程线性定常连续系统状态方程x Ax Bu =+,0(0)x x =,0t ≥状态响应00()()()()d tx t t x t Bu φφτττ=+-⎰, 0t ≥ 式中状态转移矩阵()At t e φ=,则有()0()(0)()d tAt A t x t e x e Bu τττ-=+⎰, 0t ≥ 1. 用MATLAB 中expm(A)函数计算状态转移矩阵At e例8.4 022130x x u -⎡⎤⎡⎤=+⎢⎥⎢⎥-⎣⎦⎣⎦,1(0)1x ⎡⎤=⎢⎥⎣⎦,0u = ①求当0.2t =时,状态转移矩阵即0.2Att e =;>> A=[0 -2;1 -3];>> dt=0.2;>> phi=expm(A*dt)得到如下结果phi =0.9671 -0.29680.1484 0.5219②计算0.2t =时系统的状态响应110.2220.2(0)0.96710.29680.6703(0)(0)0.14840.52190.6703At t t x x e x x x ==-⎡⎤⎡⎤⎡⎤⎡⎤=⋅==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦2. 用step(),impulse() 求阶跃输入,脉冲输入响应例8.5 连续二阶系统[]111222120.75240.7268110.72680022.87768.9463x x u x x u x y x ---⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦⎡⎤=⎢⎥⎣⎦求系统的单位阶跃响应% MATLAB Program of example 4.5.mA=[-0.7524 -0.7268;0.7268 0];B=[1 -1;0 2];C=[2.8776 8.9463];D=0;step(A,B,C,D);figure(1)grid on ;title('单位阶跃响应')xlabel('时间')ylabel('振幅')运行结果3. 用initial()函数,求系统的零输入响应[y,t,x]=initial(sys,x 0)6.5例中,当输入0u =时,状态初值[](0)0.20.2x =A=[-0.7524 -0.7268;0.7268 0];B=[1 -1;0 2];C=[2.8776 8.9463];D=0;t=[0:0.01:15];u=0;sys=ss(A,B,C,D);x0=[0.2 0.2];[y,t,x]=initial(sys,x0,t)plot(t,x) 运行结果§8.3 系统的可控性与可观性分析1. 线性定常系统的可控性分析x Ax Bu y Cx Du=+=+ 可控性矩阵21[,,,,]n c u B AB A B A B -=,系统完全可控 rank c u n =。

在MA TLAB 中,可用(,)ctrb A B 函数求可控性矩阵c u ctrb(A,B)例 8.6 120011101000111x x u ⎡⎤⎡⎤⎢⎥⎢⎥=+⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦, 判断系统的可控性。

℅MA TLAB program of example 6.6.mA=[1 2 0;1 1 0;0 0 1];B=[0 1;1 0;1 1];n=3;CAM=ctrb(A,B);rcam=rank(CAM);if rcam==ndisp('system is controlled') elseif rcam<ndisp('system is not controlled') end执行结果system is controlled例8.72220,010,12612 x Ax bu A b--⎡⎤⎡⎤⎢⎥⎢⎥=+=-=⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦将该系统状态方程转换为可控标准型。

变换矩阵111111,[0,,0,1]cnPP AP P u P A--⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦℅MA TLAB Program of example 6.7.mA=[-2 2 -2;0 -1 0;2 -6 1];b=[0;1;2];s=ctrb(A,b);if det(s)~=0s1=inv(s);endP=[s1(3,:);s1(3,:)*A;s1(3,:)*A*A]; PT=inv(P);A1=P*A*PT%(Ac=PAP^)b1=P*b%(bc=P*b)运行结果A1 =0.0000 1.0000 -0.0000-0.0000 0 1.0000-2.0000 -3.0000 -2.0000b1 =1.0000这样可得可控标准型矩阵110100001,02321c c A A b b ⎡⎤⎡⎤⎢⎥⎢⎥====⎢⎥⎢⎥⎢⎥⎢⎥---⎣⎦⎣⎦2. 线性定常系统的可观性分析x Ax Bu y Cx Du =+⎧⎨=+⎩可观性矩阵01n C CA U CA -⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦系统可观 0rankU n =在MA TLAB 中,可用函数obsv(A,C)确定可观性矩阵。

相关文档
最新文档