久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 24442|回復: 8
收起左側

LMI算法設計狀態反饋H∞控制器的一個例子

[復制鏈接]
ID:77367 發表于 2015-4-18 20:32 | 顯示全部樓層 |閱讀模式

這兩天看到很多關于線性矩陣不等式(Linear MatrixInequality,LMI)算法方面的東西,但是好像沒一個實際的例子可以參考,糾結了兩天做了一個單級倒立擺的例子出來,對有些人說不定還是有用的,PS:這是我畢業論文的一部分 。
    一個倒立擺系統的數學模型轉化成標準的H∞控制問題模型,即:

給加權矩陣C1和D12選擇一個合適的參數(通常是通過仿真反復試驗得出來),求解下面的一個LMI,使γ的值取到最小,從而得到一個最優的
態反饋H∞控制器







    下面是利用MATLAB LMI工具箱解決這個問題獨一無二的例子,網上沒有第二份這樣的代碼了。另外仿真還可以使用MATLAB/Simulink。。。。。


%基于LMI算法的倒立擺狀態反饋H∞控制器設計
%State Feedback H∞ controller design based lmi approach
%by 2013/04/03 hemmingway <hemmingway@163.com>

clc
clear all
%----------------------------------------------%
%定義常數矩陣
A=[0  1       0       0;
   0 -0.0883  0.6293  0;
   0  0       0       1;
   0 -0.2357  27.8285 0] ;
B1=[0 2.3566  0 104.2027]';
B2=[0 0.8832  0 2.3566]';
C1=[0.064 0   0    0;
    0     1e-3  0    0;
    0     0   0.11 0;
    0     0   0    0.01;
    0     0   0    0];
D12=[0 0 0 0 0.01]';
D11=[0 0 0 0 0]';
C2=[1 0 0 0;
    0 0 1 0];
D21=[0 0 0 0]';
D22=[0 0 0 0]';

%
setlmis([]);       %建立一個LMI
X=lmivar(1,[4,1]); %定義矩陣變量
W=lmivar(2,[1,4]);
r1=lmivar(1,[1,1]);

%%%%%%%
lmiterm([1 1 1 X],A,1,'s');
lmiterm([1 1 1 W],B2,1,'s');
lmiterm([1 2 1 0],B1');
lmiterm([1 2 2 0],-1);
lmiterm([1 3 1 X],C1,1);
lmiterm([1 3 1 W],D12,1);
lmiterm([1 3 2 0],D11);
lmiterm([1 3 3 r1],-1,1);

%
lmiterm([-2 1 1 X],1,1);

lmisys=getlmis;

%%----------------------------solver---------------------------------------
n = decnbr(lmisys);
c = zeros(n,1);
for j=1:n
     [r1j]=defcx(lmisys,j,r1);
      c(j)=trace(r1j);
end
%c=mat2dec(lmisys,zeros(4,4),zeros(1,4),eye(1))
[copt,xopt]=mincx(lmisys,c, [0 0 0 0 0]);

X=dec2mat(lmisys,xopt,X)
W=dec2mat(lmisys,xopt,W)

K=W*X^(-1);
K=K/100    %%控制器,為什么要除以100? 因為D12矩陣哪里是0.001,不是傳統的1

r1=dec2mat(lmisys,xopt,r1);  
gammar=r1^(1/2)               %%gammar

%----------------------------------simu------------------------------------
%
w=0.0;
n=1;
Dt=0.01;
t=-0.8;
t0=t;
x=[-0.2 0 0.3 0]';
for i=1:1500
     if t<0
        %t1=4*pi*t;
        t1=4*pi*t;
        x=[1.1*sin(t1); 1.2*cos(t1); 0.5*sin(t1)+1.0*cos(t1); 0];
    else
      u=K*x;                    %%反饋控制
      Dx=A*x+B1*w+B2*u;
      x=x+Dx*Dt;
    end

    Y(:,n)=x;
    t=t+Dt;
    n=n+1;
end

figure(1)
time = (1:n-1)*Dt+t0;
xpos=Y(1,:);
xangle=Y(3,:);

subplot(2,1,1)
plot((1:n-1)*Dt+t0,xpos,'k')
axis([-0.8 10 -1.5 1.5])
grid on
xlabel('time(s)')
ylabel('Cart positon')

subplot(2,1,2)
plot((1:n-1)*Dt+t0,xangle,'k')
axis([-0.8 10 -1.5 1.5])
grid on
xlabel('time(s)')
ylabel('Pendulum')








評分

參與人數 1黑幣 +8 收起 理由
tieq1952 + 8 很給力!

查看全部評分

回復

使用道具 舉報

ID:103169 發表于 2016-1-14 11:14 | 顯示全部樓層
K=K/100    %%控制器,為什么要除以100? 因為D12矩陣哪里是0.01,不是傳統的1
請問為什么要這樣處理啊
回復

使用道具 舉報

ID:103169 發表于 2016-1-14 15:10 | 顯示全部樓層
另外,請問你的simulink模塊是怎么設計的呢?
回復

使用道具 舉報

ID:125815 發表于 2016-6-8 11:12 | 顯示全部樓層
你好,可以全部看看你的畢業論文嗎?在知網上可以下載嗎?題目是什么?麻煩了
回復

使用道具 舉報

ID:138094 發表于 2016-8-31 21:36 | 顯示全部樓層
請問,可以看一下你解出的X矩陣么?用這種方法必須要X是對角化矩陣么?我的仿真不是倒立擺的,是航天器的,但是接出來的X矩陣對角元素特別大,求解
回復

使用道具 舉報

ID:259946 發表于 2017-12-10 22:41 | 顯示全部樓層
mincx的例子很棒,非常感謝
回復

使用道具 舉報

ID:267412 發表于 2017-12-26 22:08 | 顯示全部樓層
真的很給力!
回復

使用道具 舉報

ID:253767 發表于 2017-12-27 08:00 | 顯示全部樓層
真是好東西,很給力,值得贊佩
回復

使用道具 舉報

ID:430188 發表于 2018-11-20 20:54 | 顯示全部樓層
樓主,你好,我是東北大學的一名學生,想看一下您的設計文章,不知道題目是什么,或者您的這些參數是如何設計出來的,我現在很需要,謝謝你
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本亚洲欧美 | 成人国产一区二区三区精品麻豆 | 手机在线不卡av | 亚洲高清在线观看 | 国产日韩久久 | 男女一区二区三区 | 午夜一区 | 日本又色又爽又黄的大片 | 先锋资源网 | 久久精品福利视频 | av免费网| 亚洲成人一区 | 欧美一二三 | 97精品国产 | 久久精品一区二区三区四区 | 一级片视频免费 | 国产精品久久久久久久久久久久 | 成人自拍视频网站 | 欧美日韩国产在线观看 | 国产精品无码久久久久 | 日本黄色不卡视频 | 免费av手机在线观看 | 成人性视频免费网站 | 一区二区三区av | 在线不卡av | 色综合一区二区 | 日韩成人高清 | 国产中文视频 | 日韩成人在线视频 | 亚洲激情专区 | 91精品国产乱码久久久久久久久 | 亚洲精品av在线 | 在线啊v| 欧美亚洲另类丝袜综合网动图 | 久久久久久黄 | 午夜精品视频一区 | 国产一区二区在线观看视频 | 日日干干 | 日韩免费一区 | 91精品国产日韩91久久久久久 | 亚洲精品18 |