Matlab - Ramificación de variables

   
Vista:

Ramificación de variables

Publicado por Juan MG (10 intervenciones) el 20/04/2017 17:10:41
Hola buenas,

estoy creando un programa y se me ha ocurrido una forma de simplificar el código. Desafortunadamente, no sé cómo programar dicho recurso o siquiera si es posible hacerlo.

Mi intención es que a partir de un vector pueda ir creando otros nombres de variables.

1
2
3
4
5
6
7
SEGMENT = {'RFOO','RSHA','RTHG'}; %lo que tengo
 
%nuevas variables que quiero crear
RFOO.Fin
RSHA.Fin
RTHG.Fin
...etc.

Mi pregunta es si es posible que haya alguna manera, por la cual, al declarar SEGMENT{2}.Fin (por ejemplo) consiguiera el mismo resultado que declarando RSHA.Fin .

Las aplicaciones, como podréis imaginar, son bastante amplias. El vector SEGMENT con el que trabajo no es de dimensión 3 sino de 15. Si pudiera crear variables de esta manera ahorraría muchísimo código. De hecho, el código sería 15 veces menos extenso con un simple bucle "for".

Ejemplo de la idea:

1
2
3
4
5
6
7
8
9
n=length(SEGMENT);
 
for i = 1:n
 
      SEGMENT{i}.Fin = 2;
      SEGMENT{i}.Fext = 3;
      SEGMENT{i}.Freac = 4;
 
end

Si hay alguna manera de hacerlo me vendría genial.
Gracias de antemano y perdón por la extensión de la pregunta.
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 JESUS DAVID ARIZA ROYETH

Ramificación de variables

Usa eval

1
eval([SEGMENT{i}    '.Fin = 2;'])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ramificación de variables

Publicado por Juan (10 intervenciones) el 21/04/2017 13:07:27
Muchísimas gracias!

Esto es lo que estaba buscando.

Ya por último preguntar: si tras esto quiero hacer nuevas operaciones con dichas variables, ¿siempre tengo que utilizar el comando eval?

por ejemplo:

aux = eval([SEGMENT{i} '.Fin ']) + 2;

o ¿una vez utilizado eval es posible utilizar la variable de forma mas directa?
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 JESUS DAVID

Ramificación de variables

Publicado por JESUS DAVID (1216 intervenciones) el 21/04/2017 17:09:13
La puedes usar de forma directa pero si vas a usar diferentes variables en un ciclo debes usar eval nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Ramificación de variables

Publicado por Juan MG (10 intervenciones) el 22/04/2017 00:23:43
De acuerdo, muchas gracias!
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