2012-04-02 11 views
9

Necesito cargar datos experimentales en scicoslab, un clon (muy mal diseñado) de scilab que admite el modelado gráfico. La documentación en la web es bastante pobre, pero es razonablemente similar a scilab y octava.Acceso a variable por nombre de cadena

Los datos que necesito procesar están contenidos en una cierta cantidad de archivos de texto: Data_005, Data_010, ..., Data_100. Cada uno de ellos se puede cargar utilizando el -ascii indicador para el comando loadmatfile.

El problema proviene del hecho de que loadmatfile("foo", "-ascii") carga el archivo foo.mat en una variable llamada foo. Con el fin de un ciclo en los archivos de datos, que tendría que hacer algo como:

for i = [5:5:100] 
    name = sprintf("Data_%02d", i); 
    loadmatfile(name, "-ascii"); 
    x = read_var_from_name(name); 
    do_something(x); 
end 

donde lo que busco es una orden interna del read_var_from_name lo que permitiría que tenga acceso a la tabla de símbolos interna mediante cuerda.

¿Sabe si existe una función similar?

Notas:

  1. No hay manera de anular este comportamiento si el archivo está en formato ascii;
  2. En esta fase también podría usar octava (no se requiere modelado gráfico), aunque se comporta de la misma manera.

Respuesta

9
>> foo = 3.14; name = 'foo'; eval(name) 

foo = 

    3.1400 

Los trabajos anteriores en MATLAB, y la documentación de Scilab dice que también tiene una función de eval. Sin embargo, no estoy seguro si te entendí correctamente.

+0

confirmado que se trabaja bajo octava y scicoslab – Dacav

9

@ arne.b tiene una buena respuesta.

En su caso también se puede hacer eso en Matlab:

a=load('filename.mat') 
x=a.('variable_name') 
+1

sólo quería decir (como alguien de un fondo de programación donde 'eval()' se considera el mal) Gracias por señalar esto; ¡No tenía idea de que esta sintaxis existía! – miken32

+0

@ miken32 'eval' es realmente malo. – Oli

Cuestiones relacionadas