Reputation: 14774
In an executable Octave script, I want to pass the name of a file containing a matrix and make gnu octave load that file information as a matrix. How do I do that?
Here is what the script should look like
#! /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
The file passed will be a matrix containing a matrix of arbitrary size say 2x3
1 2 3
5 7 8
At the command line the script should be run as ./myscript mymatrixfile
where mymatrixfile
contains the matrix.
This is what I get when I try to execute the script just written above with octave
[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]$
Where generators.xyz
is the file containing the matrix I need
Upvotes: 9
Views: 14617
Reputation: 2855
This should work:
#!/usr/bin/octave -qf
arg_list = argv ();
filename = arg_list{1};
load("-ascii",filename);
when you wrote the line load filename
you indicated to the load function to load the file name "filename". That is to say, you did the thing that is equivalent to load('filename');
.
In both MATLAB and Octave, a function "foo" followed by a space then the word "bar" indicates that bar is to be submitted as a string to foo. This is true even if bar is a defined variable in your workspace.
Upvotes: 11