2011-08-26 25 views
5

Tengo un espacio de trabajo de matlab donde todas las variables se cargan desde un archivo .mat utilizando el comando de carga. Ahora, quiero iterar a través de todos estos objetos y realizar operaciones en ellos.matlab cómo iterar a través de todos los objetos en un área de trabajo

¿Hay alguna forma de acceder a los objetos sin indicar explícitamente sus nombres? Por ejemplo, espacio de trabajo (1)?

Respuesta

8

Puede obtener la lista de todas las variables como la cadena mediante who:

myvars = who; 

luego si quieres hacer algo con el contenido de las variables (who da sólo los nombres de variables), se puede hacer algo de esta manera:

for i=1:length(myvars) 
    myfunction(eval(myvars(i))) 
end 
10

Estoy de acuerdo con @ respuesta de Simón, sin embargo, si todo lo que interesa son las variables que se cargan desde un único archivo .mat, que puede ser mejor usar la forma struct-asignación de la carga:

S = load('myfile.mat') 

Ahora en vez de conseguir, 'y', 'z' 'x' en su espacio de trabajo, que tienen S.x, S.y y S.z.

A continuación, puede recorrer todos los campos de la estructura con:

for f = fieldnames(S)' 
    disp(['Field named: ' f{1} ]); 
    disp('Has value ') 
    disp(S.(f{1})); 
end 
Cuestiones relacionadas