9

在可执行的 Octave 脚本中,我想传递包含矩阵的文件的名称,并使 gnu octave 将该文件信息加载为矩阵。我怎么做?

这是脚本的外观

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

传递的文件将是一个矩阵,其中包含一个任意大小的矩阵,比如 2x3

1 2 3
5 7 8

在命令行,脚本应该作为包含矩阵的./myscript mymatrixfile 地方运行。mymatrixfile

这就是我尝试使用 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]$  

generators.xyz包含我需要的矩阵的文件在哪里

4

1 回答 1

11

这应该有效:

#!/usr/bin/octave -qf

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

当您编写load filename指示加载函数的行以加载文件名“filename”时。也就是说,你做了相当于load('filename');.

在 MATLAB 和 Octave 中,函数“foo”后跟一个空格,然后单词“bar”表示 bar 将作为字符串提交给 foo。即使 bar 是工作区中定义的变量也是如此。

于 2012-05-18T01:12:27.343 回答