各位大神好,上一帖子表达不清楚,我的例子找不到可行解,我就想让有一些参数进行for循环,让电脑帮我找使得tmin<0的可行解,请问怎么调用tmin呢?
比如以下例子,让参数m,n,c做循环,如果tmin<0,则跳出循环。可是这里的if语句是无效的,怎么写才有效?
for m=0.01:0.01:0.99;
n=0.99-m;
for c=0.01:0.01:9.9;
A=[0.25,0;0,0.2];
%D=[-0.002,0;0,-0.002];
T=[0.1,0;0,0.1]; %Gamma
B=[0.05,0;0,0.05]; %check{B}
J=[0,0;0,0]; %hat{B}
W=[0.05,0;0,0.05];
B1=[0.02,0;0,0.02]; %B_{iN_i}取固定的矩阵
r=16; %lamda
%c=9.9;
e=10; %tau~
M=2; %复杂网络的节点
pg=1; % feedback gain
g11=99.9-pg/c; % f11=100
g12=0.0997; %f12=-2
g21=0.0997;
g22=-0.0997;
a11=g11*g11+g21*g21; %aij 是矩阵G的元素
a12=g11*g12+g21*g22;
a21=g12*g11+g22*g21;
a22=g12*g12+g22*g22;
f=1.01; %eta
dk=2; %时滞dk;
y=exp(0.5*r);
x=exp(-r*(dk+1));
% m=0.9 ; %alpha
% n=0.01; %beta
%x=log(f)/t;
setlmis([]);
P=lmivar(1,[2 1]);
U=lmivar(1,[1 0;1 0]);
u=lmivar(1,[1 1]); %zeta
%网络节点取i=1;
% 1st LMI
BRL=newlmi;
lmiterm([BRL 1 1 P],1,1);
lmiterm([-BRL 1 1 u],1,eye(2)); %eye(2)表示2阶单位矩阵
% 2nd LMI
Xpos=newlmi;
lmiterm([Xpos 1 1 P],A',A);
lmiterm([Xpos 1 1 P],0.5*c*c*(a11*a11+a12*a12)*T,T);
lmiterm([Xpos 1 1 P],0.5*M*c*c*T,T);
lmiterm([Xpos 1 1 P],c*(g11*g11+g12*g12)*A',A);
lmiterm([Xpos 1 1 P],2*M*c*T,T);
lmiterm([Xpos 1 1 u],W',W);
lmiterm([Xpos 1 1 P],-m,exp(-r));
lmiterm([Xpos 1 3 P],A',1);
lmiterm([Xpos 2 2 U],-1,J);
lmiterm([Xpos 2 2 P],-n,x);
lmiterm([Xpos 2 3 U],1,B);
lmiterm([Xpos 3 3 P],1,1);
lmiterm([Xpos 3 3 P],c*(g11*g11+g12*g12),1);
lmiterm([Xpos 3 3 U],-1,1);
%3th LMI
LXK=newlmi;
lmiterm([LXK 1 1 P],-f,1);
lmiterm([LXK 1 2 P],(eye(2)+B1)',y);
lmiterm([LXK 2 2 P],-1,1);
%4th LMI
ABC=newlmi;
lmiterm([-ABC 1 1 P],1,1);
%5th LMI
LKO=newlmi;
lmiterm([-LKO 1 1 U],1,1);
%6th LMI
MJL=newlmi;
lmiterm([-MJL 1 1 u],1,1);
%lmiterm([-1 1 1 0],f);
%lmiterm([1 1 1 0],x);
lmis=getlmis;
[tmin,xfeas]=feasp(lmis)
if tmin<0
break;
P=dec2mat(lmis,xfeas,P)
U=dec2mat(lmis,xfeas,U)
u=dec2mat(lmis,xfeas,u)
end
end
end
end
最后
以上就是甜甜棉花糖最近收集整理的关于matlab for in,matlab LMI取参数用for循环 怎么调用tmin的全部内容,更多相关matlab内容请搜索靠谱客的其他文章。
发表评论 取消回复