Please help me to overcome the error of the my code

2 views (last 30 days)
Hi , Is there anyone to help me o solve the error? please i become confused.
Bw=zeros(3,1);
Cg=[0 0 1]; Cz=[0 0 1];
Dzu=0; Dzw=1; Dw=1;
r1=-0.1; r2=0.5; r3=-1.2;r4=0.2;
Ag{1} =[0 0 -(r1+.2*r1);1 0 -(r2+0.2*r2);0 1 -(r3+0.2*r3)]
Bg{1}=[r4+0.2*r4;1;0]
P{1,1} = ss(Ag{1}, [Bg{1} Bw], [Cz;Cg], [Dzu Dzw;0 Dw],0.1)
Ts = 0.1
z = tf('z',Ts)
s = tf('s')
phi = conphi('laguerre',[Ts,0,2],'z',z/(z-1))
W{1}=0.4902*(z^2-1.0432*z+0.3263)/(z^2-1.282*z+0.282);
Ld = 0.2/s
per =conper('Hinf',W,Ld)
K = condes(P{i,k},phi,per)
[a,b,c,d]=ssdata(K);
the error is on " K = condes(P{i,k},phi,per)" and error is : Index exceeds matrix dimensions.
Error in condes (line 988) K1{k}(p,q) = minreal(transpose(x(nn+k:Ngs:nn+Ngs*n(p,q))) * phi{p,q});
Error in firstexx (line 43) K = condes(P{i,k},phi,per)

Answers (1)

Torsten
Torsten on 2 Feb 2018
I don't see variables i and k to define P{i,k}.
Best wishes
Torsten.
  4 Comments
elahe mastani
elahe mastani on 2 Feb 2018
Edited: Torsten on 2 Feb 2018
okay let me send whole code.
Bw=zeros(3,1);
Cg=[0 0 1]; Cz=[0 0 1];
Dzu=0; Dzw=1; Dw=1;
r1=-0.1; r2=0.5; r3=-1.2;r4=0.2;
Ag{1} =[0 0 -(r1+.2*r1);1 0 -(r2+0.2*r2);0 1 -(r3+0.2*r3)]
Ad{2} =[0 0 -(r1+.2*r1);1 0 -(r2-0.2*r2);0 1 -(r3+0.2*r3)]
Ad{3} =[0 0 -(r1+.2*r1);1 0 -(r2+0.2*r2);0 1 -(r3-0.2*r3)]
Ad{4} =[0 0 -(r1-.2*r1);1 0 -(r2+0.2*r2);0 1 -(r3+0.2*r3)]
Ad{5} =[0 0 -(r1-.2*r1);1 0 -(r2-0.2*r2);0 1 -(r3+0.2*r3)]
Ad{6} =[0 0 -(r1+.2*r1);1 0 -(r2-0.2*r2);0 1 -(r3-0.2*r3)]
Ad{7} =[0 0 -(r1-.2*r1);1 0 -(r2+0.2*r2);0 1 -(r3-0.2*r3)]
Ad{8} =[0 0 -(r1-.2*r1);1 0 -(r2-0.2*r2);0 1 -(r3-0.2*r3)]
Bg{1}=[r4+0.2*r4;1;0];Bg{2}=[r4-0.2*r4;1;0];
OP = ss(Ag{1},[Bg{1} Bw],[Cz;Cg],[Dzu Dzw;0 Dw],0.1)
%%step procedure
% ST =epsilion > 0; % small tolerance
% step 1 % 15 ITeration
for i=1:8
for k=1:2
for l = 0
if l==0
%initial controller for each vertices
P{i,k} = ss(Ag{i}, [Bg{k} Bw], [Cz;Cg], [Dzu Dzw;0 Dw],0.1)
Ts = 0.1
z = tf('z',Ts)
s = tf('s')
phi = conphi('laguerre',[Ts,0,2],'z',z/(z-1))
W{1}=0.4902*(z^2-1.0432*z+0.3263)/(z^2-1.282*z+0.282);
Ld = 0.2/s
per =conper('Hinf',W,Ld)
K = condes(P{i,k},phi,per)
[a,b,c,d]=ssdata(K);
else
a= ACRi
b= BCRi
c= CCRi
d= DCRi
Ki=ss(a,b,c,d,0.1);
end
% step 2
A =[Ag{i}+Bg{k}*d*Cg Bg{k}*c;b*Cg a];
B=[Bw+Bg{k}*d*Dw;b*Dw]; C=[Cz+Dzu*d*Cg Dzu*c] ; D=Dzw+Dzu*d*Dw;
n = size(A,1);
cvx_begin sdp
variable X(n,n) symmetric ;
variable Q(n,n) symmetric ;
variable MT(n,n) ;
variable mu
minimize mu
subject to
[(Q-A'*Q*A) (Q*A+MT-X*A)' (B'*MT-B'*X*A)' C';
(Q*A+MT-X*A) 2*X-Q (B'*X)' zeros(n,1);
(B'*MT-B'*X*A) B'*X eye(1,1) D';
C zeros(1,n) D mu*eye(1,1)]<0;
cvx_end
T = inv(chol(X));
M = T'*MT*T;
P =T'*Q*T;
% step 3
m = size(Ag{i},1);
cvx_begin sdp
variable Aci(m,m) symmetric;
variable Bci(m,1) symmetric;
variable Cci(1,m) symmetric;
variable Dci(1,1) symmetric;
variable mu
minimize mu
subject to
[P-M'*P*M (P*M-M+inv(T)*A*T)' (zeros(1,2))' (C*T)';
P*M-M+inv(T)*A*T 2*eye(n,n)-P inv(T)*B zeros(1,2)';
zeros(1,2) (inv(T)*B)' eye(n,1) D';
C*T zeros(1,2) D mu*eye(1,1)]<0
ACRl=Aci
BCRl= Bci
CCRl=Cci
DCRil= Dci
cvx_end
pause
%step 4
if mu(l-1)-mu(l)>0
l=l+1
else
Kl=ss(ACRl,BCRl,CCRl,DCRl,0.1)
break
end
end
end
end

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!