Matlab - Guardar matrices dentro de otras de forma iterativa

   
Vista:

Guardar matrices dentro de otras de forma iterativa

Publicado por fernando (14 intervenciones) el 02/12/2015 18:37:52
Hola, buenas tardes.

Estoy realizando un programa para mi tesis y dentro de esto debo realizar un estudio de ciertos casos, lo que sucede es que debo almacenar matrices que se crean para cada caso y luego debo utilizar dichas matrices para crear otras matrices (que es creada con submatrices) para cada caso


les muestro parte del codigo para ver si me pueden ayudar con esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
casos=10;
liminf_p=0.3;
liminf_q=0.3;
 
limsup_p=0.9;
limsup_q=0.9;
 
for k=1:casos
P = liminf_p:((limsup_p-liminf_p)/casos):limsup_p;
Q = liminf_q:((limsup_q-liminf_q)/casos):limsup_q;
 
Sinf(k)= P(k)+Q(k)*i;
IL(k) =Sinf(k)/Vinf;
Vg(k)= Vinf+IL(k)*Ze;
Vt_ang_rad(k)= angle(Vg(k));
Vt_mod(k)= abs(Vg(k));
Ig(k)=(cos(Vt_ang_rad(k))+i*sin(Vt_ang_rad(k))-Vbinf_mod)/(Re+i*Xe);
E(k)=cos(Vt_ang_rad(k))+i*sin(Vt_ang_rad(k))+Ig(k)*(Rs+i*Xq);
ang_pot(k)=angle(E(k));
ang_pot_rad(k) = (ang_pot(k)*2*pi/360);
 
%tensiones y corrientes en ejes dq
 
Id_Iq(k)=(cos((pi/2)-ang_pot(k))+i*sin((pi/2)-ang_pot(k)))*Ig(k);
Vd_Vq(k) = (cos((pi/2)-ang_pot(k))+i*sin((pi/2)-ang_pot(k)))*(cos(Vt_ang_rad(k))+i*sin(Vt_ang_rad(k)));
 
% Eq transiente
 
Eq_trans(k) = imag(Vd_Vq(k))+Xd_trans*real(Id_Iq(k));
 
%Efd
 
Efd(k)=Eq_trans(k)+(Xd-Xd_trans)*real(Id_Iq(k));
 
% Vref
 
Vref(k) = Vt_mod(k)+(Efd(k)/Ka);
 
%Tm
 
Tm(k)= imag(Id_Iq(k))*(Eq_trans(k)+(Xq-Xd_trans)*real(Id_Iq(k)));
 
delta= sqrt(Re)+(Xe+Xq)*(Xe+Xd_trans);
 
% Constantes
 
K1(k) = -(imag(Id_Iq(k))*Vbinf_mod*(Xd_trans-Xq)*((Xq+Xe)*sin(ang_pot(k))-Re*cos(ang_pot(k)))+Vbinf_mod*((Xd_trans-Xq)*real(Id_Iq(k))-Eq_trans(k))*((Xd_trans+Xe)*cos(ang_pot(k))-Re*sin(ang_pot(k))))/delta;
K2(k) = (imag(Id_Iq(k))*delta-imag(Id_Iq(k))*(Xd_trans-Xq)*(Xq+Xe)-Re*(Xd_trans-Xq)*real(Id_Iq(k))+Re*Eq_trans(k))/delta;
K3_inv(k)=1+((Xd-Xd_trans)*(Xq+Xe))/delta;
K4(k) =((Xq+Xe)*sin(ang_pot(k))-Re*cos(ang_pot(k)))*Vbinf_mod*(Xd-Xd_trans)/delta;
K5(k) = ((real(Vd_Vq(k))/Vt_mod(k))*Xq*(Re*Vbinf_mod*sin(ang_pot(k))+Vbinf_mod*cos(ang_pot(k))*(Xd_trans+Xe))+(imag(Vd_Vq(k))/Vt_mod(k))*Xd_trans*( Re*Vbinf_mod*cos(ang_pot(k))-Vbinf_mod*sin(ang_pot(k))*(Xe+Xq)))/delta;
K6(k)=(((real(Vd_Vq(k))/Vt_mod(k))*Xq*Re-(imag(Vd_Vq(k))/Vt_mod(k))*Xd_trans*(Xe+Xq))/delta)+(imag(Vd_Vq(k))/Vt_mod(k));
K3(k)= (K3_inv(k))^(-1);
 
% matriz barra infinita AVR sin considerar PSS
 
A_patron = [(-d*Ws/(2*H)) (-K1(k)/(2*H)) (-K2(k)/(2*H)) 0;Ws 0 0 0;0 (-K4(k)/Tdo_trans) (-K3_inv(k))*(1/Tdo_trans) (1/Tdo_trans);0 ((-Ka*K5(k))/Ta) ((-Ka*K6(k))/Ta) (-1/Ta)];
 
%matrices para crear las tf para graficar los eig de los casos
B=[0;0;0;Ka/Ta];
C=[1 0 0 0];
D=zeros(1);
sys=[];
 
ay=0.1;
by=7.2079;
gy=26.3157;
Kpss= 0.000104;
 
Ac=[-ay 0 0 0;gy-ay*by -gy 0 0;by*gy-ay*by^2 gy-by*gy -gy 0;by^2*gy-ay*by^2 by*gy-by^2*gy gy-by*gy -gy];
Bc=[1 by by^2 by^3]';
Cc=[0 0 0 Kpss];



Ax=[];
for u=1:casos
Ax=[Ax A_patron]; % matriz que guarda la matriz A_patron para cada caso
end

% EN ESTA PARTE PRESENTO EL PROBLEMA MENCIONADO

Am=[];
for j =1:casos 
Am(j,j)=[Ax(:,4*j-3:4*j) B*Cc;Bc*C*Ax(:,4*j-3:4*j)  Ac];
end

end

como puede ver la matriz Am seria la que guardaría para los diferentes casos la matriz conformada por submatrices (incluyendo Ax,Ac,B,C,Cc,) y es ahi donde tengo el problema por que no me crea dicha Matriz,si me pueden ayudar seria de mucha utilidad.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder