2012-05-14 12 views
9

In einem ausführbaren Octave-Skript möchte ich den Namen einer Datei mit einer Matrix übergeben und gnu Oktave diese Dateiinformationen als eine Matrix laden. Wie mache ich das?Übergeben Sie einen Dateinamen als Befehlszeilenargument an GNU Octave-Skript

Hier ist, was das Skript wie

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

Die Datei, die eine Matrix beliebiger Größe sagen 2x3 eine Matrix wird weitergegeben aussehen sollte enthalten

1 2 3 
5 7 8 

in der Befehlszeile sollte das Skript ausgeführt werden als ./myscript mymatrixfile wobei mymatrixfile die Matrix enthält.

Dies ist, was ich bekomme, wenn ich versuche, mit Oktave

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

Wo generators.xyz die Datei über das Skript gerade geschrieben auszuführen ist, müssen die Matrix I

enthält

Antwort

8

Dies sollte funktionieren:

#!/usr/bin/octave -qf 

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

Wenn Sie die Zeile load filename geschrieben haben, haben Sie angegeben, dass die Ladefunktion den Dateinamen "Dateiname" lädt. Das heißt, Sie haben das gemacht, was load('filename'); entspricht.

In MATLAB und Octave, eine Funktion "foo" gefolgt von einem Leerzeichen dann zeigt das Wort "bar" an, dass bar als String an foo übergeben werden soll. Dies gilt auch, wenn der Balken eine definierte Variable in Ihrem Arbeitsbereich ist.

+0

Was ist der entsprechende Code in MATLAB? – Celik

Verwandte Themen