利用 MATLAB 求解系统的状态方程
- 格式:doc
- 大小:102.00 KB
- 文档页数:11
1. 已知离散时间系统的差分方程为:2y(n) - y(n -1) - 3y(n -2)=2x(n) - x(n -1)x(n)=0.5n u(n) , y(-1)=1,y(-2)=3 , 试用filter 函数求系统的零输入响应、零状态响应和全响应.解:将差分方程Z 变换得:12112()[()(1)]3[()(1)(2)]2()[()(1)]Y z z Y z y z Y z z y y X z z X z x -----+--+-+-=-+- (1)依题意有:x(-1)=0,x(-2)=0,y(-1)=1,y(-2)=3 ,X(z)=1110.50.5z z z -=-- 将上式变形如下: 1211(23)()[(1)3(1)3(2)](2)()z z Y z y z y y z X z --------+-+-=- ………..(2) 1211(23)()(2)()[(1)3(1)3(2)]z z Y z z X z y z y y ------=-+-+-+-1211(23)()(2)()[103]z z Y z z X z z ------=-++ (3)易得系统函数为H(z)= 12122222323z z z z z z z -----=---- ① 零输入时零输入时,x(n)=0,差分方程右边为0,z 变换后应为121(23)()103z z Y z z -----=+112103()23z Y z z z ---+=-- =2210323z z z z +-- =71835152z z z z ++- 将Y(z)进行Z 反变换,得到其零输入响应为: y(n)= 7183[(1)()]()552n n u n -+ ② 零状态时零状态时,将y(-1)=0,y(-2)=0代入上面的式(2)中,得Y(z)= 112223z z z ------X(z)= 112223z z z ------1110.5z --=22223z z z --=233 5152 z z z z++-将其Z反变换,得到零状态响应为:y(n)=233 [(1)()]() 552n n u n -+③全响应与上面同理,y(-1)=1,y(-2)=3将上面式(3)变形得:Y(z)=2212323z zz z+--=92135152z zz z++-Z反变换得全响应为Y(n)=921[]()35152z zu n z z++-程序代码:%第二章Z变换第2.12题程序clear all;close all;num=[2 -1 0]; %系统函数分子的系数den=[2 -1 -3]; %系统函数分母的系数n=0:50;nl=length(n);%求零输入响应y01=[1 3]; %y的初始状态x01=[0 0]; %x 的初始状态x1=zeros(1,nl);zi1=filtic(num,den,y01,x01); %为filter函数准备初始值y1=filter(num,den,x1,zi1); %求零输入响应subplot(311);stem(n,y1,'r.');title('零输入响应');grid on;%求零状态响应y02=[0 0];x02=[0 0];x2=0.5.^n;zi2=filtic(num,den,y02,x02);y2=filter(num,den,x2,zi2);subplot(312);stem(n,y2,'r.');title('零状态响应');grid on;%求全响应y03=[1 3];x03=[0 0];x3=0.5.^n;zi3=filtic(num,den,y03,x03);y3=filter(num,den,x1,zi3);subplot(313);stem(n,y3,'r.');title('全响应');grid on;运行结果如下:2. 已知离散系统的系统函数分别为(1)2321()21z zH zz--=-(2)31()1zH zz+=-(3)2322()2241zH zz z z+=+-+(4)332()0.20.30.4zH zz z z=+++试用MATLAB实现下列分析过程:①求出系统的零极点位置;②绘出系统的零极点图,根据零极点图判断系统的稳定性;③绘出系统单位响应的时域波形,并分析系统稳定性与系统单位响应时域特性的关系。
Matlab程序解现代控制理论与工程中的状态方程用矩阵指数法解状态方程的matlab函数vslove1:函数vslove1:求解线性定常连续系统状态方程的解function[phit,phitbu]=vsolves1(a,b,ut)%vsolves1谋线性已连续系统状态方程x’=ax+bu的求解%[phit,phitbu]=vsolves1(a,b,ut)%a,b系数矩阵%ut控制输入,必须为时域信号的符号表达式,符号变量为t%phit――输出phi(t)%phitbu――输入phi(t-tao)*b*u(tao)在区间(0,t)的分数symsttao%定义符号变量t,taophit=expm(a*t);%求矩阵指数exp(at)if(b==0)b=zeros(size(a,l),l);%重构系数矩阵bendphi=sub(phit,’t’,’t-tao’);%求exp[a(t-tao)]phitbu=int(phi*b*ut,’tao’,’0’,’t’);%谋exp[a(t-tao)]*b*u(tao)在0~t区间的分数用拉氏变换法解状态方程的matlab函数vslove2:函数vslove2:解线性定常已连续系统状态方程的求解function[sl_a,sl_abu]=vsolves1(a,b,us)%vsolves2求线性连续系统状态方程x’=ax+bu的解%[sl_a,sl_abu]=vsolves1(a,b,ut)%a,b系数矩阵%us掌控输出,必须为拉氏转换后的符号表达式,符号变量为s%sl_a――输入矩阵(sl-a)^(-1)拉式反华转换的结果%sl_abu――输出(sl-a)^(-1)*b*u(s)拉式反变换后的结果symss%定义符号变量t,taoaa=s*eye(size(a))-a;%谋si-ainvaa=inv(aa);%求(si-a)矩阵的逆intaataa=ilaplace(intaa);%求intaa的拉氏反变换si_a=simplify;%简化拉式反变换的结果if(b==0)b=zeros(size(a,l),l);%重构系数矩阵bendtab=ilaplace(intaa*b*us);%求intaa*b*us的拉氏反变换si_abu=simplify(tab);%化简拉式反变换的结果解时变系统状态方程的matlab函数tslove:函数tslove:求解线性时变连续系统状态方程的解function[phi,phibu]=tsolves(a,b,u,x,a,n)%tsolves求时变系统状态方程%[phi,phibu]=vsolves1(a,b,u,x,a,n)%a,b时变系数矩阵%phi――状态迁移矩阵计算结果%phibu――THF1求解分量%u――控制输入向量,时域形式%x――符号变量,阐明矩阵a中的时变参数,通常为时间t%a――积分下限%n――时变状态转移矩阵中计算重积分的最大项数,n=0时无重积分项%n=1时包含二重积分项,.....phi=transmtx(a,x,a,n);%排序状态迁移矩阵phitao=subs(phi,x,’tao’);%谋phi(tao)if(b==0)btao=zeros(size(a,l),l);%谋b(tao)endutao=subs(u,x,’tao’);%求u(tao)phibu=simple(int(phitao*btao*utao,’tao’,a,x));%排序THF1分量求解时变系统转移矩阵的matlab函数transmtx:函数transmtx:解线性时变系统状态迁移矩阵functionphi=transmtx(a,x,a,n)%transmtx计算时变系统状态转移矩阵%phi=transmtx(a,x,a,n)%phi――状态迁移矩阵计算结果%a时变系数矩阵%x――符号变量,指明矩阵a中的时变参数,通常为时间t%a――积分下限%n――时变状态迁移矩阵中排序轻分数的最小项数,n=0时并无轻分数项%n=1时涵盖二重积分项,.....phi=eye(size(a));%初始化phi=iforlop=0:naa=a;fori=1:lopif(aa==0)break;endatemp=subs(aa,x,’taoi’);aa=simplify(a*int(atemp,’tao’,a,x));endif(aa==0)break;endatemp=subs(aa,x,’taoi’);aa=simplify(a*int(atemp,’tao’,a,x));%计算重积分phi=simplify(phi+aa);%修正phiend解线性定常离散系统状态方程的matlab函数disolve:函数disolve:求解线性定常离散系统状态方程的解function[ak,akbu]=disolve(a,b,uz)%disolve谋线性离散系统状态方程x(k+1)=ax(k)+bu(k)的求解%[ak,akbu]=disolve(a,b,uz)%a,b系数矩阵%uz控制输入,必须为z变换后的符号表达式,符号变量为z%ak――输出矩阵[((zi-a)^(-1)z]z反变换后的结果%akbu――输入矩阵[((zi-a)^(-1)*b*u(z)]z反华转换后的结果symsz%定义符号变量zaa=z*eye(size(a))-a;%求zi-ainvaa=inv(aa);%谋(zi-a)矩阵的逆intaataa=iztrans(intaa*z);%谋intaa*z的z 反华转换ak=simple(taa);%精简z反华转换的结果if(b==0)b=zeros(size(a,l),l);%重构系数矩阵bendtab=iztrans(intaa*b*uz);%谋intaa*b*uz的z反华转换akbu=simple(tab);%化简z 反华转换的结果求解线性时变离散系统状态方程的matlab函数tdsolve:函数tdsolve:解线性时变离散系统状态方程的求解functionxk=tsolve(ak,bk,uk,x0,kstart,kend)%tdsolve求线性时变离散系统状态方程x(k+1)=a(k)x(k)+b(k)u(k)的解%xk=tsolve(ak,bk,uk,x0,kstart,kend)%ak,bk系数矩阵%uk掌控输出,必须为时域符号表达式,符号变量为k%x0初始状态%kstart――起始时刻%kend――中止时刻%xk――输出结果,矩阵每一列分别对应x(k0+1),x(k0+2)....symsk%定义符号变量kif(bk==0)bk=zeros(size(a,l),l);%重构系数矩阵bendxk=[];forkk=kstart+1:kendaa=eye(size(k));fori=kstart:kk-1%排序a(k-1)a(k-2)....a(k0+1)a(k0)a=subs(ak,’k’,i);aa=a*aa;endaab=eye(size(ak));bb=zeros(size(bk));fori=kk-1:-1:kk+1%排序a(k-1)a(k-2)....a(j+1)b(j)u(j)的递增和a=subs(ak,’k’,i);aab=aab*a;b=subs(bk,’k’,kk-1+i+kstart);u=subs(uk,’k’,kk-1+i+kstart);bb=bb+aab*b*u;endb=subs(bk,’k’,kk-1);u=subs(uk,’k’,kk-1);bb=bb+b*u;xk=[xkaa*x0+bb];%计算x(k)end已连续系统状态方程线性化后的matlab符号函数sc2d:函数sc2d:线性连续系统状态方程的离散化function[ak,bk]=sc2d(a,b)%sc2d线性化线性已连续系统状态方程x’=ax+bu%sysd=sc2d(a,b)%a,b――连续系统的系数矩阵%ak,bk――离散系统系数符号矩阵%线性状态方程为:x(k+1)=ak*x(k)+bk*u(k)%ak,bk中变量t为取样周期symstt%定义符号变量ttphit=expm(a*t);%求矩阵指数exp(at)if(b==0)b=zeros(size(a,l),l);%重构系数矩阵bendphitb=int(phit*b,’t’,0,’t’);%求exp(at)*b在0~t区间的积分ak=simple(subs(phit,’t’,’t’));bk=simple(phitb);线性时变系统线性化后的matlab函数tc2d:函数tc2d:线性时变系统的离散化function[ak,bk]=tc2d(a,b,x,n)%tc2d线性时变系统的离散化%[ak,bk]=tc2d(a,b,x,n)%a,b――已连续系统的系数矩阵%ak――离散化后的系数矩阵a(kt)%bk――离散化后的系数矩阵b(kt)%x――符号变量,阐明矩阵a\\b中的时变参数,通常为时间t%n――时变状态转移矩阵中计算重积分的最大项数,n=0时无重积分项,%n=1时包含二重积分项,.....symsttphit=transmtx(a,x,k*t,n);%计算时变系统的状态转移矩阵ak=simplify(subs(phi,x,(k+1)*t));%计算离散化后的系数矩阵a(kt)phitao=subs(phi,x,’tao’);%谋phi(tao)if(b==0)btao=zeros(size(a,l),l);elsebtao=subs(b,x,’tao’);%谋b(tao)endphitb=simple(int(phitao*btao,’tao,k*t,x’));%计算受控分量bk=simplify(subs(phib,x,(k+1)*t));%排序线性化后的系数矩阵b(kt)定常系统可控规范i型变换函数ccanonl:函数ccanonl:谋线性定常系统的受控规范i型形式function[abar,bbar,cbar,t]=ccanonl(a,b,c)ìanonl求系统x’=ax+bu,y=cx的可控规范i型系数矩阵?ar,bbar,cbar,――变换后的可控规范i型系数矩阵%t――相似变换矩阵n=length(a);co=ctrb(a,b);if(rank(co)~=n),%判断系统可控性error(‘系统不可控!’);。
实验1 利用matlab进行系统的时域分析一.实验目的:1.了解离散时间序列卷积与的matlab实现;2.利用卷积与求解系统的零状态响应;二.实验原理:1.连续时间系统零状态响应的求解连续时间LTI系统以常系数微分方程描述,系统的零状态响应可通过求解初始状态为零的微分方程得到。
在MATLAB中,控制系统工具箱提供了一个用于求解零初始状态微分方程数值解的函数lsim。
其调用方式为y= lsim( sys,x,t)式中t表示计算系统响应的抽样点向量,x就是系统输入信号向量,sys就是连续时间LTI系统模型,用来表示微分方程、差分方程、状态方程。
在求解微分方程时,微分方程的连续时间LTI系统模型sys要借助tf函数获得,其调用方式为sys= tf(b,a)式中b与a分别为微分方程右端与左端各项的系数向量。
例如对3阶微分方程+++=+++可用a=[ a3, a2, a1, a0];b=[b3 ,b2, b1,b0]; sys=tf( b,a)获得连续时间LTI模型。
注意微分方程中为零的系数一定要写入向量a与b中。
【例2-1】描述某力学系统中物体位移y(t)与外力f(t)的关系为++y(t)=x(t)物体质量m=l kg,弹簧的弹性系数ks= 100 N/m,物体与地面的摩擦系数fd=2 N·s/m,系统的初始储能为零,若外力x(t)就是振幅为10、周期为1的正弦信号,求物体的位移y(t)。
解:由已知条件,系统的输入信号为x(t)=10sin(2πt),系统的微分方程为++100y(t)=x(t)计算物体位移y(t)的MATLAB程序如下:%program2_1微分方程求解ts=0;te=5;dt=0、01;sys=tf([1],[1 2 100]);t=ts:dt:te;x=10*sin(2*pi*t);y=lsim(sys,x,t);plot(t,y);xlabel('Time(sec)')ylabel('y(t)')-0.25-0.2-0.15-0.1-0.0500.050.10.150.2Time(sec)y (t )图2-1系统的零状态响应2、连续时间系统冲激响应与阶跃响应的求解在MATLAB 中,求解系统冲激响应可应用控制系统工具箱提供的函数impulse,求解阶跃响应可利用函数step 。
文章标题:深入理解Matlab中的向后Euler方法在数值计算中,求解常微分方程(ODE)是一个十分常见也是重要的任务。
其中,向后Euler方法是一种常用的数值求解方法之一。
在Matlab中,我们可以通过调用内置函数ode15s来使用向后Euler方法来求解ODE。
在本文中,我们将深入探讨Matlab中使用向后Euler方法求解ODE的原理和应用,并通过具体例子来展示其在实际工程中的价值。
1. 向后Euler方法的原理和特点向后Euler方法是一种隐式数值求解方法,其基本思想是将微分方程转化为差分方程,然后通过迭代的方式逼近实际解。
与前向Euler方法相比,向后Euler方法具有更好的稳定性和收敛性,特别在处理刚性ODE的时候表现更为突出。
在Matlab中,我们可以使用ode15s函数来调用向后Euler方法进行数值求解,其使用形式为[y, t] =ode15s(@(t,y)odefun,tspan,y0,options)。
2. 向后Euler方法在实际工程中的应用在实际工程中,ODE求解是一个非常重要的任务。
在控制系统设计中,经常需要求解系统的状态方程以完成系统设计和性能评估;在仿真和建模中,也需要对系统进行数值求解以获得系统的动态响应。
在这些应用中,向后Euler方法常常被用来求解刚性ODE,以获得更为准确和稳定的结果。
3. 使用Matlab进行向后Euler方法的数值求解在Matlab中,使用向后Euler方法进行数值求解非常方便。
通过调用ode15s函数,我们可以通过简单的参数设置来实现对ODE的求解。
下面通过一个简单的例子来展示如何使用Matlab中的向后Euler方法来求解ODE。
考虑一个一阶常微分方程dy/dt = -2y,初始条件为y(0) = 1。
我们可以使用Matlab中的ode15s函数来对其进行数值求解。
具体代码如下:```matlabfunction yprime = odefun(t,y)yprime = -2*y;end[t, y] = ode15s(@odefun, [0 10], 1);plot(t, y, '-')xlabel('t');ylabel('y(t)');title('Solution of dy/dt = -2y using Backward Euler method');```通过运行以上代码,我们可以得到dy/dt = -2y的数值解。
标题: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中的求解方法。
学院:船舶学院班级:0701104 学号:070110418 姓名:施鹏作业一:有初始状态为0的二阶微分方程x"+0.2x'+0.4x=0.2u (t), 其中u(t)是单位阶跃函数,试建立系统模型并仿真。
方法1:用积分器直接构造求解微分方程的模型。
方法2:利用传递函数模块建模。
方法3:利用状态方程模块建模。
解:x’’+0.2x’+0.4x=0.2u(t) x’’=-0.2x’-0.4x+0.2u(t) u(t)=1(t)方法一:0102030405060708090100方法二:x ’’+0.2x ’+0.4x=0.2u(t)L 氏变换后得:s 2X(s)+0.2sX(s)+0.4X(s)=0.2U(s) G(s)=0.2/(s 2+0.2s+0.4)10 20 30 40 50 60 70 80 90 1000.10.20.30.40.50.60.70.8方法三:输出同上。
作业2:封装蹦极系统。
要求:封装后的蹦极子系统只有一个输出端口,封装后子系统的参数设置包括蹦极者的体重、弹性绳索的弹性常数。
通过仿真分析蹦极系统在下述情况下是否安全,并绘制响应的响应曲线:(1)蹦极者体重80 kg,弹性绳索的弹性常数为30;(2)蹦极者体重70 kg,弹性绳索的弹性常数为20。
解:蹦极跳时一种挑战身体极限的运动,蹦极者系着一根弹性绳从高处的桥梁(或山崖等)向下跳。
在下落的过程中,蹦极者几乎处于失重状态。
按照牛顿运动规律,自由下落的物体由下式确定:m为人体的质量,g为重力加速度。
位置x的基准为桥梁的基准面.12m x m g a x a x x∙∙∙∙∙=--如果人体系在一个弹性常数为k 的弹性绳索上,定义绳索下端的初始位置为o ,则其对落体位置的影响为: 因此,整个蹦极系统的数学模型为:其为典型的具有连续状态的非线性系统。
设桥梁距离地面为50m ,即h2=50 蹦极者起始速度为0蹦极者的起始位置为绳索的长度30m ,即h1=30其余的参数为:a2=a1=1,m=70kg ,g=10m/s2,k,m 由具体参数确定 初始条件:x(0)=-30;x(0)’=0 1,模型:封装后:,0()0,kx x b x x ->⎧=⎨≤⎩12,0()()0,kx x m x m g b x a x a x xb x x ∙∙∙∙∙->⎧=+--=⎨≤⎩封装属性:输入要测试内容:结果为:(1)m=80,k=30时(2)m=70,k=20时结论:两组输入的输出,即与地面的距离y都小于0,所以不安全。
多智能体事件触发是一种在多智能体系统中协调和控制各个智能体行为的方法。
在这种方法中,智能体之间通过一定的规则和算法来响应其他智能体的状态变化,从而实现系统整体的协调运行。
在实际应用中,多智能体事件触发方法可以应用于无人系统协同控制、智能交通系统、分布式能源管理等领域。
在Matlab中,可以通过编写特定的代码来实现多智能体事件触发控制。
下面将介绍在Matlab中实现多智能体事件触发的基本步骤和代码实现。
1. 确定多智能体系统模型需要确定多智能体系统的模型,包括每个智能体的动力学方程、通信拓扑结构以及事件触发规则。
以双车间隔控制系统为例,系统的动力学方程可以表示为:x1' = -a*x1 + b*(x2 - x1)x2' = -a*x2 + b*(x1 - x2)其中,x1和x2分别代表两个智能体的状态变量,a和b为系统参数。
拓扑结构可以表示为一个邻接矩阵,描述智能体之间的通信连接。
事件触发规则可以选择为定期触发或者条件触发,在代码实现中需要根据具体的规则进行编程。
2. 编写Matlab代码在Matlab中,可以使用ODE45函数对多智能体系统的动力学方程进行数值求解。
需要编写事件触发规则的判定条件,以及根据条件来更新触发时刻。
以下是一个简单的Matlab代码示例:```matlabfunction event_triggered_controla = 1;b = 1;tspan = [0 10];x0 = [0.5; 1];options = odeset('Events', et_events);[t, x] = ode45(et_odefun, tspan, x0, options, a, b);plot(t, x);xlabel('Time');ylabel('State Variables');legend('x1', 'x2');endfunction dxdt = et_odefun(t, x, a, b)dxdt = [-a*x(1) + b*(x(2) - x(1));-a*x(2) + b*(x(1) - x(2))];endfunction [value, isterminal, direction] = et_events(t, x, a, b)value = norm(x(2) - x(1)) - 0.1;isterminal = 1;direction = 0;end```在上面的代码中,首先定义了双车间隔控制系统的动力学方程et_odefun,然后通过ode45函数求解系统的状态变量随时间的变化。
实验一 MATLAB 系统的传递函数和状态空间表达式的转换一、实验目的1、学习多变量系统状态空间表达式的建立方法;2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法;3、掌握相应的MATLAB 函数。
二、实验原理设系统的模型如式(1.1)所示:⎩⎨⎧+=+=DCx y BuAx x ' x ''R ∈ u ∈R ’’’ y ∈R P (1.1) 其中A 为nXn 维系统矩阵、B 为nXm 维输入矩阵、C 为pXn 维输出矩阵,D 为直接传递函数。
系统的传递函数和状态空间表达式之间的关系如式(1.2)所示G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2) 式(1.2)中,num(s)表示传递函数的分子阵,其维数是pXm ,den(s)表示传递函数的按s 降幂排列的分母。
表示状态空间模型和传递函数的MATLAB 函数如下:函数ss (state space 的首字母)给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D)函数tf (transfer function 的首字母)给出了传递函数,其一般形式是: G=tf(num ,den)其中num 表示传递函数中分子多项式的系数向量(单输入单输出系统),den 表示传递函数中分母多项式的系数向量。
函数tf2ss 给出了传递函数的一个状态空间实现,其一般形式是: [A,B,C,D]=tf2ss(num,den)函数ss2tf 给出了状态空间模型所描述系统的传递函数,其一般形式是: [num,den]=ss2tf(A,B,C,D,iu)其中对于多输入系统,必须确定iu 的值。
例如,若系统有三个输入u 1,u 2,u 3,则iu 必须是1、2、或3,其中1表示u 1,2表示u 2,3表示u 3。
该函数的结果是第iu 个输入到所有输出的传递函数。
三.实验步骤及结果1、应用MATLAB 对下列系统编程,求系统的A 、B 、C 、D 阵,然后验证传递函数是相同的。
实验报告
实验名称利用 MATLAB 求解系统的状态方程
系统的能控性、能观测性分析
系专业班
姓名学号授课老师
预定时间2014-5-28实验时间实验台号14
一、目的要求
掌握状态转移矩阵的概念。
学会用 MATLAB求解状态转移矩阵。
掌握求解系统状态方程的方法,学会绘制状态响应曲线;
掌握线性系统状态方程解的结构。
学会用 MATLAB 求解线性定常系统的状态响应和输出响应,并绘制相应曲线。
掌握能控性和能观测性的概念。
学会用 MATLAB 判断能控性和能观测性。
掌握系统的结构分解。
学会用 MATLAB 进行结构分解。
掌握最小实现的概念。
学会用 MATLAB 求最小实现。
二、原理简述
线性定常连续系统的状态转移矩阵为。
函数 step( ) 可直接求取线性连续系统的单位阶跃响应。
函数 impulse( ) 可直接求取线性系统的单位脉冲响应。
函数 lsim( ) 可直接求取线性系统在任意输入信号作用下的响应。
函数 initial( ) 可求解系统的零输入响应。
n 阶线性定常连续或离散系统状态完全能控的充分必要条件是:能控性
的秩为 n。
线性定常连续或离散系统输出能控的充分必要条件是:矩阵
的秩为m。
n 阶线性定常连续或离散系统状态完全能观测的充分必要条件是:能观测性矩阵
的秩为 n。
三、仪器设备
PC 计算机,MATLAB 软件
四、内容步骤
题2.1
A=[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,'-')
五、数据处理题2.1
题2.2
G = 0.9709 0.0448 -1.1212 0.7915
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)。