方法:可以从Unix命令行获取参数的MATLAB脚本

时间:2012-08-31 22:25:27

标签: matlab command-line command-line-arguments

为了具体起见,请在名为add_em的文件中考虑以下超简单的Python脚本:

#!/usr/bin/env python
# script name: add_em

from sys import argv

x = int(argv[1])
y = int(argv[2])
x_plus_y = x + y
print '%d' % x_plus_y

我现在可以运行这个脚本, 并从Unix命令行 传递参数,如下所示:

% python add_em 3 8
11

如果我使脚本可执行,我甚至不需要在命令行中提到python

% chmod +x add_em
% add_em 41 -29
12

有人可以告诉我如何编写(并运行)MATLAB脚本,使其完全像上面的脚本那样执行吗?特别是,它必须能够从Unix命令行读取其参数(而不是例如MATLAB GUI的“命令行”),并将它们的数字和打印到标准输出。

  

注意:此脚本 无需 为“独立”; IOW,可以假设MATLAB是本地安装的,甚至可以在命令行中提到matlab(类似于上面的第一个表单,其中python解释器在命令行上显式调用)

谢谢!

PS:毋庸置疑,这个剧本是“强大”的对立面,但我的目标是产生一个容易传达的例子。

1 个答案:

答案 0 :(得分:9)

您可以使用MATLAB函数在add_em.m

中执行您想要的操作
function add_em(x, y)
x_plus_y = x + y;
disp(x_plus_y);
exit;

然后使用-r开关从Unix命令行调用它。示例:

matlab -nodesktop -nojvm -nosplash -r "add_em(3, 8)" 

-选项会禁止桌面,java和splash,因此脚本/函数将在不增加额外开销的情况下执行。

您还可以通过将输出重定向到日志文件(用于任何计算)或拖尾来抑制MATLAB欢迎/版权消息,例如输出以便在终端上打印某些内容

matlab -nosplash -nodesktop -nojvm -r "add_em(3, 8)" | tail -n 3

更新:刚刚发现这篇文章/答案及相关信息:suppress start message of Matlab