Matlab - Guardar soluciones de iteraciones

 
Vista:

Guardar soluciones de iteraciones

Publicado por Pedro Fernandez (4 intervenciones) el 16/09/2015 20:14:33
Bien, mi problema es el siguiente estoy efectuando un programa para determinar los polos que cumplen la condición de optimalidad.
En las siguientes secuencias , mi programa ejecuta todas las posibles combinaciones existentes y q necesito para dicha comprobación. El problema surge al guardar los datos, a la vista esta q son una cantidad enorme de combinaciones.
Pues desearía conseguir lo siguiente. Guardar aquellos datos de wn y z q para TODOS los valores de w cumpla que optimo >=1

¿¿Alguien seria capaz de ayudarme??
llevo poco tiempo trabajando con matlab y se me queda un poco grande este asunto.

Muchas gracias de antemano.
un saludo.

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
A=[-0.0185 0.0063 0.2281 -9.8080;-0.1329 -0.6443 20.6582 -0.2187 ;0.0384 0.0140 -3.8153 0.0000;0.0000 0.0000 0.9996 0.0000]
B=[1.2496 -8.1445;-96.3119 -13.4400;6.7362 45.2389;0.0000 0.0000]
 
 
for wn=0:0.001:30
for z=0.35:0.001:1
for w=0:10:300
p1=-2;
p2=-0.5;
p3=-z*wn+j*wn*sqrt(1-z^2);
p4=conj(p3);
polos_deseados=[p1,p2,p3,p4];
K=place(A,B,polos_deseados);
control_optimo=eye(2)+((K*inv(i*w*eye(4)-A))*B);
control_optimo=svds(control_optimo)
optimo=control_optimo(2)>=1
%solo guarda el ultimo valor
if optimo>=1
save wnz_datos wn z
end
wn
z
w
end
end
end
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
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Guardar soluciones de iteraciones

Publicado por Royeth (1818 intervenciones) el 17/09/2015 06:50:18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
A=[-0.0185 0.0063 0.2281 -9.8080;-0.1329 -0.6443 20.6582 -0.2187 ;0.0384 0.0140 -3.8153 0.0000;0.0000 0.0000 0.9996 0.0000];
B=[1.2496 -8.1445;-96.3119 -13.4400;6.7362 45.2389;0.0000 0.0000];
kk=1;
M=[];
for wn=0:0.001:30
for z=0.35:0.001:1
for w=0:10:300
p1=-2;
p2=-0.5;
p3=-z*wn+j*wn*sqrt(1-z^2);
p4=conj(p3);
polos_deseados=[p1,p2,p3,p4];
K=place(A,B,polos_deseados);
control_optimo=eye(2)+((K*inv(i*w*eye(4)-A))*B);
control_optimo=svds(control_optimo)
optimo=control_optimo(2)>=1;
if optimo>=1
M(kk)=[wn z w];
kk=kk+1;
end
end
end
end
disp(M)

saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Guardar soluciones de iteraciones

Publicado por Pedro Fernandez (4 intervenciones) el 17/09/2015 23:49:25
Jesús muchísimas gracias de nuevo, lo he intentado a través de tus instrucciones y me da un error a partir del primer valor que cumple la condición.

Creo haber entendido su idea y me parece alucinante ademas de haber aprendido algo más, pero no acaba de funcionar.
alguien podría ayudarme, este problema supera mis conocimientos sobre MAtlab.

Recuerdo mi objetivo seria el siguiente: Guardar aquellos datos de wn y z q para TODOS los valores de w cumpla que optimo >=1.


control_optimo =

1.0184
0.9818


control_optimo =

1.0166
0.9836


control_optimo =

3.4055
1.0598

In an assignment A(I) = B, the number of elements
in B and I must be the same.

Gracias a todos de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Guardar soluciones de iteraciones

Publicado por Miguel González (42 intervenciones) el 22/09/2015 01:29:31
Hola :) Intenta lo siguiente :

1) Declara la variable M como
M=zeros(1,3);

2) Asignale los valores :

M(kk,:)=[wn z w];


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar