将文件名作为命令行参数传递给GNU Octave脚本 [英] Pass a file name as a command line argument to GNU Octave script

查看:18
本文介绍了将文件名作为命令行参数传递给GNU Octave脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在一个可执行的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包含矩阵。

这是我尝试使用八度音阶执行上面编写的脚本时得到的结果

[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是包含我需要的矩阵的文件

推荐答案

这应该可以工作:

#!/usr/bin/octave -qf

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

当您编写load filename行时,您向Load函数指示要加载文件名"filename"。也就是说,你做了相当于load('filename');的事情。

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

这篇关于将文件名作为命令行参数传递给GNU Octave脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆