Matlab程序解现代控制理论与工程中的状态方程

上传人:磨石 文档编号:109743671 上传时间:2022-06-17 格式:DOC 页数:8 大小:34KB
收藏 版权申诉 举报 下载
Matlab程序解现代控制理论与工程中的状态方程_第1页
第1页 / 共8页
Matlab程序解现代控制理论与工程中的状态方程_第2页
第2页 / 共8页
Matlab程序解现代控制理论与工程中的状态方程_第3页
第3页 / 共8页
资源描述:

《Matlab程序解现代控制理论与工程中的状态方程》由会员分享,可在线阅读,更多相关《Matlab程序解现代控制理论与工程中的状态方程(8页珍藏版)》请在装配图网上搜索。

1、用矩阵指数法解状态方程的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)的积分syms t tao %定义符号变量t,taoPhit=expm(A*t); %求矩阵指数exp(At)if (B=0) B=

2、zeros(size(A,l),l); %重构系数矩阵Bendphi=sub(Phit,t,t-tao); %求expA(t-tao)PhitBu=int(phi*B*ut,tao,0,t); %求expA(t-tao)*B*u(tao)在0t区间的积分用拉氏变换法解状态方程的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控制输入,必须为拉氏变换后

3、的符号表达式,符号变量为s%sl_A输出矩阵(sl-A)(-1)拉式反变换的结果%sl_ABu输出(sl-A)(-1)*B*u(s)拉式反变换后的结果syms s %定义符号变量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的拉氏反变换

4、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受控解分量%u控制输入向量,时域形式%x符号变量,指明矩阵A中的时变参数,通常为时间t%a积分下限%n时变状态转移矩阵中计算重积分的最大项数,n=0时无重积分项% n=1时包含二重积分项,.Phi

5、=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); %计算受控分量求解时变系统转移矩阵的MATLAB函数transmtx:函数transmtx:求解线性时变系统状态转移矩阵function Phi=transmtx(A,x,a,n)%transmtx计算时变系统状态转移矩阵%Phi=tran

6、smtx(A,x,a,n)%Phi状态转移矩阵计算结果%A 时变系数矩阵%x符号变量,指明矩阵A中的时变参数,通常为时间t%a积分下限%n时变状态转移矩阵中计算重积分的最大项数,n=0时无重积分项% n=1时包含二重积分项,.Phi=eye(size(A); %初始化Phi=Ifor lop=0:n AA=A; for i=1:lop if (AA=0) break; end Atemp=subs(AA,x,taoi); AA=simplify(A*int(Atemp,tao,a,x); end if (AA=0) break; end Atemp=subs(AA,x,taoi); AA=si

7、mplify(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)zZ反变换后的结果%AkBu输出矩阵(zI-A)(

8、-1)*B*u(z)Z反变换后的结果syms z %定义符号变量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:函数

9、tdsolve:求解线性时变离散系统状态方程的解function xk=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).syms k %定义符号变量kif (Bk=0) Bk=zeros(size(A,l),l); %重构系

10、数矩阵Bend xk= ;for kk=kstart+1: kend AA=eye(size(k); for i=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);for i=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);

11、BB=BB+AAB*B*u; end B=subs(Bk,k,kk-1); u=subs(uk,k,kk-1); BB=BB+B*u; xk=xk AA*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为采样周期syms t T %定义

12、符号变量t TPhit=expm(A*t); %求矩阵指数exp(At)if (B=0) B=zeros(size(A,l),l); %重构系数矩阵BendPhitB=int(Phit*B,t,0,T); %求exp(At)*B在0T区间的积分 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(

13、kt)%Bk 离散化后的系数矩阵B(kt)%x 符号变量,指明矩阵AB中的时变参数,通常为时间t%n 时变状态转移矩阵中计算重积分的最大项数,n=0时无重积分项,% n=1时包含二重积分项,.syms t T Phit=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); else Btao=subs(B,x,tao); %求B(tao)endP

14、hitB=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)%ccanonl 求系统X=AX+Bu,y=Cx的可控规范I型系数矩阵%Abar,Bbar,Cbar,变换后的可控规范I型系数矩阵%T 相似变换矩阵n=length(A);Co=ctrb(A,B);if (rank(Co)=

15、n), %判断系统可控性 error(系统不可控!);endRs=sym(polymtx(A); %计算R矩阵并转变为符号矩阵Rs形式As=sym(A); %讲矩阵A转变为符号矩阵AsBs=sym(B); %讲矩阵B转变为符号矩阵BsTs=Bs; for i=1:n-1, Ts=Asi*Bs Ts;end Ts=Ts*Rs; %计算相似变换符号矩阵TsAbar=numeric(inv(Ts)*As*Ts); %实现矩阵A的相似变换并转变为数值形式Bbar=numeric(inv(Ts)*Bs); %实现矩阵B的相似变换并转变为数值形式Cbar=numeric(inv(C)*Ts); %实现矩阵

16、C的相似变换并转变为数值形式T=numeric(Tc); %相似变换矩阵T转变为数值形式求系统相似变换的R矩阵函数polymtx:函数polymtx: 求系统相似矩阵变换的R矩阵function R=polymtx(A)%R=polymtx(A)A须为方针% 1 0 0 0 % a(n-1) 1 0 0 % R= a(n-2) a(n-1) 0 0 % . . . . % a(2) a(3) 1 0 % a(1) a(2) a(n-1) 1 %其中a(i)(i=1,.n-1)为矩阵A的特征多项式%|s*I-A|=sn+a(n-1)*s(n-1)+.+a(1)*s+a(0)%的各项系数d=siz

17、e(A);if (length(d)=2), %判断系统可控性 error(错误:非二维矩阵!);endif (d(1)=d(2), %判断系统可控性 error(错误:A非方针!);endn=d(1);As=sym(A);p=sym2poly(poly(As);R=;for i=1:n R=R p(1:n); p=0 p(1:n); endR=numeric(R);线性定常系统可控分解函数cdecomp:函数cdecomp: 线性定常系统的可控性分解function Abar,Bbar,Cbar,P=cdecomp(A,B,C)%cdecomp 可控性分解%Abar,Bbar,Cbar,P=

18、cdecomp(A,B,C)%若系统不完全可控,则存在相似变换矩阵P,使得% -1 -1 %Abar=P*A*P, Bbar=P*B, Cbar=C*P%其中%Abar=|Ac A12| ,Bbar=|Bc |,Cbar=|Cc Cuc| |0 Auc| |0| %(Ac,Bc)构成系统的可控子空间As=sym(A); %转变为符号矩阵求解Bs=sym(B); Cs=sym(C); nA=size(As,l);Ms=sym(ctrb(As,Bs); %求可控性矩阵Mn=numeric(rank(Ms);if (nnA), P=; %系统不可控,计算变换矩阵P i=1; while numeri

19、c (rank(P)n, %取M的n个线性无关列矢量至P矩阵 P=P Ms(:,i); if (numeric(rank(P)size(P,2), P (:,size(P,2)= ; end i=i+1;endE=sym(eye(size(A);i=1; while numeric (rank(P)nA, %取某一单位向量至P阵使P满秩 P=P E(:,i); if (numeric(rank(P)size(P,2), P (:,size(P,2)= ; end i=i+1;endelse P=eye(size(A); %若系统可控,取P=1endAbar=numeric(inv(P)*A*P

20、); %转变为数值矩阵输出Bbar=numeric(inv(P)*B); Cbar=numeric(inv(C*P); P=numeric(P); 线性定常系统可观分解函数odecomp:函数odecomp: 线性定常系统的可观性分解function Abar,Bbar,Cbar,P=odecomp(A,B,C)%odecomp可控性分解%Abar,Bbar,Cbar,P=odecomp(A,B,C)%若系统不完全可观,则存在相似变换矩阵P,使得% -1 -1 %Abar=P*A*P, Bbar=P*B, Cbar=C*P%其中%Abar=|Ao 0| ,Bbar=|Bo |,Cbar=|Co 0| |A21 Ano| |Bno| %(Ao,Bo)构成系统的可观子空间%根据对偶原理,应用可控性分解函数cdecomp实现可观性分解abar,bbar,cbar,P=cdecomp(A,B,C);Abar=abar; Bbar=cbar; Cbar=bbar;8 / 8

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!