Matlab - multiples variables

 
Vista:

multiples variables

Publicado por zauberberg (14 intervenciones) el 08/01/2008 16:37:30
Hola a todos, mi problema es el siguiente:
Debo hacer un programa que me calcule la ruta mas corta de un grafo, para ello he pensado en hacer tantas variables como nodos. Cada una de estas varibles traer informacion del tamaño del camino, nodo anterior y demás. El problema es, que no se como crear un numero de variables variable. Es decir, si le entro un grafo de 7 nodos, me tiene que crear 7 variables tipo struct distintas, es decir; nodo1, nodo2...
Alguien save como hacer esto?

Muchas gracias,

Juan
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

RE:multiples variables

Publicado por Kike (304 intervenciones) el 08/01/2008 18:04:17
Supongo que todos los nodos tendrían los mismos campos. Entonces lo mejor es crear una sola estructura y dejar los nodos como campos de ésta.

Ejemplo:
>> cantidad_nodos=2;
>> for k=1:cantidad_nodos
Nodos(k).nodo=k;
Nodos(k).longitud=5*rand;
end
>> Nodos

Nodos =

1x2 struct array with fields:
nodo
longitud

>> Nodos(1)

ans =

nodo: 1
longitud: 3.0342

>> Nodos(2)

ans =

nodo: 2
longitud: 2.4299

Es más fácil trabajar con una sola estructura que trabajar con N estructuras.

Pero si insistes en trabajar con N variables:
for k=1:cantidad_nodos
eval(sprintf('nodo%d=struct(''nodo'',[ ],''longitud'',[ ])',k))
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

RE:multiples variables

Publicado por zauberberg (14 intervenciones) el 08/01/2008 19:05:03
Muchas gracias por la aportacion, me sirven las dos, ya que no encuentro diferencia entre ellas, ya que al inicializar las variables ¿no es lo mismo poner Nodo(2).longitud=4 que Nodo2.longitud=4?, Nodo(i) es fijo, ya que define un nodo unívocamente.

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

RE:multiples variables

Publicado por Kike (304 intervenciones) el 08/01/2008 20:16:21
Hay diferencia entre Nodo(2).longitud=4 y Nodo2.longitud=4.

Nodo(i) es para agregar un nuevo elemento a la estructura. De esta manera en una misma estructura puedo tener a todos los nodos con sus respectivos atributos.

Nodo2 es una estructura que sólo tiene información del nodo 2, pero no de los demás nodos.

Para hacer un proceso a todos los nodos es más fácil si están dentro de una misma estructura.
for k=1:cantidad_nodos
Nodo(k).campo=algo;
end

En cambio es un poco más trabajoso para MATLAB hacer esto:
for k=1:cantidad_nodos
eval(sprintf( 'Nodo%d.campo=%f ', k, algo ));
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