main.m

来自「I upload T-S fuzzy matlab code」· M 代码 · 共 177 行

M
177
字号
clc
clear all
Kact=(0.64)*10^-3; %m/v
zeta0 = 0.05;
w0 =2*pi*75;
G_n =w0^2*Kact;
G_d = [1 (2*zeta0*w0) w0^2];
tf(G_n,G_d)
[A, B, C, D] = tf2ss(G_n,G_d)
A_0= A
B_0=B*10^0.85  % (B marix)*Driver IC gain because feedback gain
C_0=C
D_0= 0
A_1=10^5*[0.0001 0.5527;0 0]
A_2=10^5*[0 -0.6316;0 0] % A matrix range
Ad_0= A_0*0.1;
Ad_1= A_1*0.1;
Ad_2= A_2*0.1;
B_1=[1.833;0]
B_2=[-1.4560;0] % B matrix range
Bd_0=B_0*0.1;
Bd_1=B_1*0.1;
Bd_2=B_2*0.1;
B_w = [-1 ; -0.001 ];
C_1=[0 111.7338];
C_2=[0 -77.0717];
Cd_0=C*0.1;
Cd_1=C_1*0.1;
Cd_2=C_1*0.2;

%=================================================================%
%         PLMI Relaxtion technique (L=2牢 版快)                 
%=================================================================%
setlmis([]);						%===  LMI狼 矫累                                                         

rho=lmivar(1,[1 0]);				%===  LMI 函荐狼 瘤沥 // gamma = root(rho)                                                
									%===  rho绰 scalar block栏肺 size绰 1 by 1捞促.
                                                                           
Q=lmivar(1,[2 1]);		%===  LMI 函荐狼 瘤沥(n篮 矫胶袍 青纺 A狼 瞒荐)捞促.
 									%===  X绰 full block栏肺 size绰 n by n
 									% X = P^-1
  
M_0=lmivar(2, [1 2]);  %===  Y_0苞 Y_1 棺 Y_2绰 m by n 青纺捞促.                                   
M_1=lmivar(2, [1 2]);		 
M_2=lmivar(2, [1 2]);		
S_1=lmivar(1,[2 1]); %R_1 inv
S_2=lmivar(1,[1 0]); %R_2 inv

%======= 肯拳扁过 利侩茄 颇扼固磐 蔼 =============%
para1 = [-0.125  1];
para2 = [-0.125  0.5 ];
para3 = [-0.125  0 ];
a=0;    % 檬扁摹 汲沥 
%================ case 1 (alpha1=1, alpha2=0)=========================%
for i=1:2
    for j=1:2
        for k=1:2
    
    a = a+1;
    lmiPL(a)=newlmi;
    lmiterm([lmiPL(a),1,1,Q],A_0+A_1,1,'s'); 
    lmiterm([lmiPL(a),1,1,M_0],B_0+B_1,1,'s');
	lmiterm([lmiPL(a),1,1,M_1],B_0+para1(i)*B_1,1,'s');
	lmiterm([lmiPL(a),1,1,M_2],para2(j)*B_1+para3(k)*B_2,1,'s');
    lmiterm([lmiPL(a),1,1,S_2],Bd_0+Bd_1,Bd_0'+Bd_1');
    lmiterm([lmiPL(a),1,1,S_1],Ad_0+Ad_1,Ad_0'+Ad_1');
	lmiterm([lmiPL(a),1,2,1],1,B_w);
    lmiterm([lmiPL(a),1,3,Q],1,C_0'+C_1');
    lmiterm([lmiPL(a),1,3,S_1],Ad_0+Ad_1,Cd_0'+Cd_1');
    lmiterm([lmiPL(a),1,1,1],1,M_0');      
    lmiterm([lmiPL(a),1,5,Q],1,1);   
    lmiterm([lmiPL(a),2,2,rho],-1,1);
    lmiterm([lmiPL(a),3,3,S_1],Cd_0+Cd_1,Cd_0'+Cd_1');
    lmiterm([lmiPL(a),3,3,0],-1);
    lmiterm([lmiPL(a),4,4,S_2],-1,1);
    lmiterm([lmiPL(a),5,5,S_1],-1,1);
    
        end
    end
end
%====================================================================%


%================ case 2 (alpha1=0, alpha2=1)=========================%
for i=1:2
    for j=1:2
        for k=1:2
    
    a = a+1;        
    lmiPL(a)=newlmi;
    lmiterm([lmiPL(a),1,1,Q],A_0+A_2,1,'s'); 
    lmiterm([lmiPL(a),1,1,M_0],B_0+B_2,1,'s');
	lmiterm([lmiPL(a),1,1,M_1],para3(i)*B_1,1,'s');
	lmiterm([lmiPL(a),1,1,M_2],B_0+para2(j)*B_1+para1(k)*B_2,1,'s');
    lmiterm([lmiPL(a),1,1,S_2],Bd_0+Bd_2,Bd_0'+Bd_2');
    lmiterm([lmiPL(a),1,1,S_1],Ad_0+Ad_2,Ad_0'+Ad_2');
	lmiterm([lmiPL(a),1,2,1],1,B_w);
    lmiterm([lmiPL(a),1,3,Q],1,C_0'+C_2');
    lmiterm([lmiPL(a),1,3,S_1],Ad_0+Ad_2,Cd_0'+Cd_2');
    lmiterm([lmiPL(a),1,1,1],1,M_0');      
    lmiterm([lmiPL(a),1,5,Q],1,1);   
    lmiterm([lmiPL(a),2,2,rho],-1,1);
    lmiterm([lmiPL(a),3,3,S_1],Cd_0+Cd_2,Cd_0'+Cd_2');
    lmiterm([lmiPL(a),3,3,0],-1);
    lmiterm([lmiPL(a),4,4,S_2],-1,1);
    lmiterm([lmiPL(a),5,5,S_1],-1,1);
     
        end
    end
end
%====================================================================%

a = a+1;
lmiPL(a)=newlmi;                         % Matrix X: Positive Definite 汲沥...
lmiterm([-lmiPL(a),1,1,Q],1,1);          %===  X > 0

a = a+1;
lmiPL(a)=newlmi;
lmiterm([-lmiPL(a),1,1,rho],1,1);    %=  rho狼 弥家 裹困汲沥     
lmiterm([lmiPL(a),1,1,0],0.1);      %===  rho > 0.1

a = a+1;
lmiPL(a)=newlmi;
lmiterm([lmiPL(a),1,1,rho],1,1);      %=  rho狼 弥措 裹困汲沥 
lmiterm([-lmiPL(a),1,1,0],1e3)        %===  溜, rho < 1e3


lmisys = getlmis;
NO_of_DVs=decnbr(lmisys)

%========================================================================
%
%       ndecv = decnbr(lmisys)
% 
%            ;  LMIs肺 钎泅登绰 矫胶袍狼 decision varialbles狼 荐 
%
%========================================================================

NO_of_LMIs=lminbr(lmisys)

%========================================================================
%
%       nlmis = lminbr(lmisys)
% 
%            ;  LMIs肺 钎泅登绰 矫胶袍俊辑 LMI狼 荐 
%
%========================================================================

c = zeros(NO_of_DVs,1);
for j=1:NO_of_DVs
    [V1] = defcx(lmisys, j, rho);
    c(j) = trace(V1);
end
[cost, xfeasp1]=mincx(lmisys, c);

[tmin, xfeasp] = feasp(lmisys);

%========== LMI 搬沥函荐 拌魂 ================%
rho_opt=dec2mat(lmisys,xfeasp1,rho)
Q_sol = dec2mat(lmisys,xfeasp,Q)
M_0_sol = dec2mat(lmisys,xfeasp,M_0)
M_1_sol = dec2mat(lmisys,xfeasp,M_1)
M_2_sol = dec2mat(lmisys,xfeasp,M_2)

K_1_tilt = M_1_sol * inv(Q_sol)  %% 力绢挤悼狼 农扁
K_2_tilt = M_2_sol * inv(Q_sol)  %% 力绢挤悼狼 农扁

%=========== 弥辆 捞垫, 皑艰啦 ===============%
K_0 = M_0_sol * inv(Q_sol)   % 力绢捞垫狼 吝缴蔼
K_1 = K_1_tilt + K_0  % 力绢捞垫狼 茄率 场
K_2 = K_2_tilt + K_0  % 力绢捞垫狼 促弗 茄率 场

gamma=sqrt(rho_opt)  % 弥利拳等 寇鄂 皑尖啦



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?