2012-05-14 12 views
9

In uno script Octave eseguibile, voglio passare il nome di un file contenente una matrice e fare in modo che gnu ottave carichi le informazioni sui file come una matrice. Come lo faccio?Passa un nome file come argomento della riga di comando allo script GNU Octave

Ecco cosa lo script dovrebbe essere simile

#! /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 

Il file passato sarà una matrice contenente una matrice di dimensione arbitraria dire 2x3

1 2 3 
5 7 8 

Nella riga di comando dello script dovrebbe essere eseguito come ./myscript mymatrixfile dove mymatrixfile contiene la matrice.

Questo è ciò che ottengo quando provo ad eseguire lo script appena scritto sopra con un'ottava

[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]$ 

Dove generators.xyz è il file che contiene la matrice ho bisogno

risposta

8

questo dovrebbe funzionare:

#!/usr/bin/octave -qf 

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

quando hai scritto la riga load filename hai indicato alla funzione di caricamento di caricare il nome file "nomefile". Vale a dire, hai fatto la cosa che è equivalente a load('filename');.

Sia in MATLAB che in Octave, una funzione "foo" seguita da uno spazio, quindi la parola "bar" indica che la barra deve essere inviata come stringa a pippo. Questo è vero anche se la barra è una variabile definita nel tuo spazio di lavoro.

+0

Quali sono i codici corrispondenti in MATLAB? – Celik

Problemi correlati