2012-05-14 14 views
9

En una secuencia de comandos Octave ejecutable, quiero pasar el nombre de un archivo que contiene una matriz y hacer gnu octava cargar esa información de archivo como una matriz. ¿Cómo puedo hacer eso?Pasar un nombre de archivo como un argumento de línea de comando a la secuencia de comandos Octave de GNU

Esto es lo que el guión debe ser similar

#! /usr/bin/octave -qf 

arg_list = argv() 

filename = argv{1} % Name of the file containing the matrix you want to load 

load -ascii filename % Load the information 

El fichero pasado será una matriz que contiene una matriz de tamaño arbitrario decir 2x3

1 2 3 
5 7 8 

En la línea de comandos de la secuencia de comandos se debe ejecutar como ./myscript mymatrixfile donde mymatrixfile contiene la matriz.

Esto es lo que me pasa cuando trato de ejecutar el script simplemente escrito arriba con octava

[Desktop/SCVT]$ ./octavetinker.m generators.xyz                    (05-14 10:41) 
arg_list = 

{ 
    [1,1] = generators.xyz 
} 

filename = generators.xyz 
error: load: unable to find file filename 
error: called from: 
error: ./octavetinker.m at line 7, column 1 

[Desktop/SCVT]$ 

Dónde generators.xyz es el archivo que contiene la matriz necesito

Respuesta

8

esto debería funcionar:

#!/usr/bin/octave -qf 

arg_list = argv(); 
filename = arg_list{1}; 
load("-ascii",filename); 

cuando escribió la línea load filename que indicó a la función de carga para cargar el nombre de archivo "nombre de archivo". Es decir, hiciste lo que es equivalente a load('filename');.

Tanto en MATLAB como en Octave, una función "foo" seguida de un espacio, la palabra "barra" indica que la barra se debe enviar como una cadena a foo. Esto es cierto incluso si bar es una variable definida en su espacio de trabajo.

+0

¿Cuál es el código correspondiente en MATLAB? – Celik

Cuestiones relacionadas