资源简介
利用matlab实现H-infinity鲁棒控制,学习鲁棒控制matlab编程的很好教程

代码片段和文件信息
%下面的代码展示了如何在Matlab中进行H-infinity控制器的设计。此处举的例子与混合
%S/KS问题有些不同。此处用到的模型和权重函数见Skogestad和Postlethwaite,1996,
%ed.1p.60.权重函数并不是“最优”的。
%
%大部分函数来自mu-tools,一些来自lmi-tools。mu-tools和lmi-tools均包含在RCT
%v3.0.1中。
%-Jorgen Johnsen 14.12.06
%-------------------------------------------------------------------------
%建立子系统
%-------------------------------------------------------------------------
%Plant:G=200/((10s+1)(0.05s+1)^2)
%方法1:直接方法,利用mu-tools
G=nd2sys(1conv([101]conv([0.051][0.05 1]))200);
%方法2:control system toolbox
s=tf(‘s‘);
Gcst=200/((10*s+1)*(0.05*s+1)^2);
[abcd]=ssdata(balreal(Gcst));
G=pck(abcd);
%权重:Ws=(s/M+w0)/(s+w0*A)Wks=1
M=1.5;w0=10;A=1.e-4;
Ws=nd2sys([1/M w0][1 w0*A]);
Wks=1;
%-------------------------------------------------------------------------
%建立广义系统P
%-------------------------------------------------------------------------
%方法0:直接方法
%/z1\ /Ws -Ws*G\ /r\
%|z2| =|0 Wks | | |
%\ v/ \I -G / \u/
%传递函数表达方法
Z1=sbs(Wsmmult(-1WsG));
Z2=sbs(0Wks);
V=sbs(1mmult(-1G));
P0=abv(Z1Z2V);
%通常情况下P0并不是最小实现,所以需要降阶
[abcd]=unpck(P0);
[abbbcbdb]=ssdata(balreal(minreal(ss(abcd))));
P0=pck(abbbcbdb); %此时得到变量为System类型
%-------------------------------------------------------------------------
%建立广义系统P
%-------------------------------------------------------------------------
%方法1:直接方法
%/z1\ /W1 -W1*G\ /r\
%|z2| =|0 W2 | | |
%\ v/ \I -G / \u/
%子系统的ss实现
[ABCD]=unpck(G);
[A1B1C1D1]=unpck(Ws);
[A2B2C2D2]=unpck(Wks);
%计算不同子系统的输入、输出变量的个数
n1=size(A11);[q1p1]=size(D1);
n2=size(A21);[q2p2]=size(D2);
n=size(A1);[qp]=size(D);%原文此处为[pq]=size(D);
%全系统的ss实现
Ap=[A1 zeros(n1n2) -B1*C;
zeros(n2n1) A2 zeros(n2n);
zeros(nn1) zeros(nn2) A];
Bp=[B1 -B1*D;
zeros(n2p) B2;
zeros(np) B];
Cp=[C1 zeros(q1n2) -D1*C;
zeros(q2n1) C2 zeros(q2n);
zeros(qn1) zeros(qn2) -C];
Dp=[D1 -D1*D;
zeros(q2p) D2;
eye(p) -D];
%得到均衡实现形式,以减少可能产生的计算问题
[ApbBpbCpbDpb]=ssdata(balreal(ss(ApBpCpDp)));
P1=pck(ApbBpbCpbDpb); %P1与P0数值相近,但符号有差别
%-------------------------------------------------------------------------
%建立广义系统P
%-------------------------------------------------------------------------
%方法2:利用sysic函数
systemnames=‘G Ws Wks‘;
inputvar=‘[r(1);u(1)]‘;%所有输入均为标量,r(2)为两维信号
outputvar=‘[Ws;Wks;r-G]‘;
input_to_G=‘[u]‘;
input_to_Ws=‘[r-G]‘;
input_to_Wks=‘[u]‘;
sysoutname=‘P2‘;
cleanupsysic=‘yes‘;
sysic
%-------------------------------------------------------------------------
%建立广义系统P
%-------------------------------------------------------------------------
%方法3:利用sconnect函数
inputs=‘r(1);u(1)‘;
outputs=‘Ws;Wks;e=r-G‘;
K_in=[];%无控制器
G_in=‘G:u‘;
Ws_in=‘Ws:e‘;
Wks_in=‘Wks:u‘;
[P3r]=sconnect(inputsoutputsK_inG_inGWs_inWsWks_inWks);
%-------------------------------------------------------------------------
%建立广义系统P
%-------------------------------------------------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6684 2011-12-08 00:09 robustcontrol.m
文件 108790 2011-12-07 17:22 hinfcontrol.pdf
文件 286208 2011-12-08 00:08 利用matlab实现鲁棒控制.doc
----------- --------- ---------- ----- ----
401682 3
- 上一篇:强化学习matlab代码
- 下一篇:isight调用matlab
相关资源
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
评论
共有 条评论