为了具体起见,请在名为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:毋庸置疑,这个剧本是“强大”的对立面,但我的目标是产生一个容易传达的例子。答案 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