资源简介
利用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
相关资源
- isight调用matlab
- 强化学习matlab代码
- 光伏电池输出特性曲线MATLAB代码
- 基于LMS算法的均衡器MATLAB实现代码
- 蚁群、粒子群、GA、TS等算法解决Job
- matlab关于商场人数的泊松随机过程仿
- 脉冲编码调制PCM调制与解调
- 64QAM调制解调
- matlab遗传算法程序以求解函数的极值
- 毕业论文 基于matlab的PSK通信系统仿真
- matlab 代码实现 信号 数字 变频
- KUKA六关节机器人matlab仿真
- hurst指数的MATLAB实现
- PSO-RBF的MATLAB程序实现
- 商人过河MATLAB.rar
- MatlabR2017aWin64Crack.rar
- Student_5_BDS_Positioning.m
- IEEE-6 14 30节点系统 MATLAB 潮流计算
- 飞行器六自由度建模 线性化 matlab程序
-
三相电压不平衡度计算 simuli
nk模型 - PMSM矢量控制
- xPC target
- MATLAB与DSP进行UDP通信的简单程序
- 内点法最优潮流MATLAB算法
- Logistic曲线的三种参数估计方法及ma
- TDOA等无线定位算法大全
- 内点法测试程序—matlab
- 智能优化算法及其MATLAB
- 4QAM调制的OFDM程序matlab的
- 基于matlab的数字电子琴的完全指导手
评论
共有 条评论