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 + -
显示快捷键?