Matlab - volver a sentencia externa de un bucle

   
Vista:

volver a sentencia externa de un bucle

Publicado por fernando (14 intervenciones) el 08/12/2015 06:09:36
Hola que tal,resulta que estoy tratando de realizar el programa de dicho diagrama de flujo y tengo problemas con la parte que marque en rojo,dado que no se me ocurre como volver a dicha sentencia anterior. antes de ese retorno no presento problemas. Para la parte donde se ve si "sigma es menor o igual a 0" lo defino con un if y break si se cumple esa premisa, y luego todo lo que viene (o sea, que sigma no es menor o igual que 0) lo defino con un "else" y luego un " while sigma mayor que 0" (MATLAB). estaría muy agradecido si me pudiera ayudar. Gracias de antemano


lazodelmal
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 JOSE JEREMIAS CABALLERO

volver a sentencia externa de un bucle

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 08/12/2015 23:02:46
Podrias poner tu avance de tu código. Porque hay variables que no están definidas y eso ocasiona que no puede hacer un programa a partir de tu diagrama de flujo que pones al foro.



Saludos .
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
jjcc94@hotmail.com
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación en Matlab.
Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com
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

volver a sentencia externa de un bucle

Publicado por Fernando (14 intervenciones) el 09/12/2015 04:16:37
Oka, pondré parte del código , algunas de las variables están definidas mas arriba pero no las puse aqui mas que nada por la embargadura del codigo (es algo extenso) ,lo que escribo acá es para el caso =1, el "if casos == 1" (como todos los demas if casos== 15,20,300 etc..) no esta(n) incluido(s) en ningún otro bucle ,ademas estoy ocupando otros toolbox, (Yalmip y sdpt3 para optimizacion lineal (LMI)),la variable "sigma" es la que se trata de minimizar. matriz Ac, Bc y Cc conforman a través de un arreglo matricial la matriz Am. asi es como yo trabajo el codigo...

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
if casos==1
P=sdpvar(n,n,'symmetric');
Ac=[-0.1 0 0 0 ;gy-0.721 -gy 0 0;7.208*gy-5.196 -6.208*gy -gy 0;51.954*gy-37.448 -44.746*gy -6.208*gy gy];
Cc=[0 0 0 Kpss];
options = sdpsettings('solver','lmilab');
 
 
LMIs = set(P>0);
LMIs = LMIs + ...
       set(Am(:,1:8)'*P+P*Am(:,1:8)<0);

LMIs =LMIs +...
    set([sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8)) cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8));cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8))' sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8))] <0);
 
options = sdpsettings('solver','sdpt3');
solvesdp(LMIs,[],options);
checkset(LMIs);
 
P=double(P);
P
 
gy=sdpvar(1,1,'full');
Kpss=sdpvar(1,1,'full');
sigma=sdpvar(1,1,'full')
Ac=[-0.1 0 0 0 ;gy-0.721 -gy 0 0;7.208*gy-5.196 -6.208*gy -gy 0;51.954*gy-37.448 -44.746*gy -6.208*gy gy];
Cc=[0 0 0 Kpss];
options = sdpsettings('solver','lmilab');
 
LMIs =LMIs +...
    set([sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8)) cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8));cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8))' sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8))] -sigma*eye(16)<0);

options = sdpsettings('solver','sdpt3');
solvesdp(LMIs,sigma,options); 
checkset(LMIs);
    sigma=double(sigma)
    sigma
if sigma <0
     Am(5:8,5:8) % de aqui puedo determinar los parametros Kpss y gy
    break

while sigma > 0
P=sdpvar(n,n,'symmetric');
gy=sdpvar(1,1,'full');
Kpss=sdpvar(1,1,'full');
sigma=sdpvar(1,1,'full')
Ac=[-0.1 0 0 0 ;gy-0.721 -gy 0 0;7.208*gy-5.196 -6.208*gy -gy 0;51.954*gy-37.448 -44.746*gy -6.208*gy gy];
Cc=[0 0 0 Kpss];
options = sdpsettings('solver','lmilab');

LMIs = set(P>0);
LMIs = LMIs + ...
       set(Am(:,1:8)'*P+P*Am(:,1:8)<0);
LMIs =LMIs +...
    set([sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8)) cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8));cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8))' sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8))] -sigma*eye(16)<0);

options = sdpsettings('solver','sdpt3');
solvesdp(LMIs,sigma,options); 
checkset(LMIs);
sigma=double(sigma)

if sigma<0
    Am(5:8,5:8)
    break
else
 P=sdpvar(n,n,'symmetric');
Ac=[-0.1 0 0 0 ;gy-0.721 -gy 0 0;7.208*gy-5.196 -6.208*gy -gy 0;51.954*gy-37.448 -44.746*gy -6.208*gy gy];
Cc=[0 0 0 Kpss];
options = sdpsettings('solver','lmilab');


LMIs = set(P>0);
LMIs = LMIs + ...
       set(Am(:,1:8)'*P+P*Am(:,1:8)<0);
 
LMIs =LMIs +...
    set([sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8)) cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8));cos(deg2rad(grad))*(Am(:,1:8)'*P-P*Am(:,1:8))' sin(deg2rad(grad))*(Am(:,1:8)'*P+P*Am(:,1:8))] <0);

options = sdpsettings('solver','sdpt3');
solvesdp(LMIs,[],options); 
checkset(LMIs);

P=double(P);
P
end
end
end
end
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

volver a sentencia externa de un bucle

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 10/12/2015 15:24:53
Tu pregunta es mas para una asesoría online personalizada. Porque estoy viendo hay muchas variables que no están definidas, en la asesoría personalizada puedes explicar en detalle de cómo funciona el código y por eso medio se puede dar una solución más acertada. Porque por este medio lo veo complicado, te puedo dar respuestas que al final de repente no te sirvan. No puedo ejecutar tu código tampoco por falta de los demás atos.


Saludos .
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
jjcc94@hotmail.com
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación en Matlab.
Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com
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

volver a sentencia externa de un bucle

Publicado por fernando (14 intervenciones) el 11/12/2015 01:56:46
si pense eso, por lo mismo no queria poner el codigo dado que se usan otras variables que engloban otras funciones y otras herramientas de programacion y mas que nada mi pregunta era como afrontar un flowchart el cual una de sus condiciones dentro de un loop debe salir de este y ademas con variables que se calculan dentro de esta condicion , "modifican la condicion de entrada al loop.

si pudiesen explicar la "logica" a seguir o un seudocodigo les estaria muy agradecido.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

volver a sentencia externa de un bucle

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 11/12/2015 02:34:20
En una programación a nivel guide derrepente se puede arreglar ese punto. Una vez un usuario quería calcular un valor de una variable que estaba dentro de un bucle y no se podía en programación secuencia. Y se tuvo que ir a programación a nivel objetos en guide para solucionar ese punto.
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