kjo*_*kjo 8 matlab command-line command-line-arguments
仅仅为了具体,请在名为的文件中考虑以下超简单的Python脚本add_em
:
#!/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
Run Code Online (Sandbox Code Playgroud)
我现在可以运行这个脚本,并从Unix命令行传递参数,如下所示:
% python add_em 3 8
11
Run Code Online (Sandbox Code Playgroud)
如果我使脚本可执行,我甚至不需要python
在命令行上提到:
% chmod +x add_em
% add_em 41 -29
12
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何编写(和运行)MATLAB脚本,使其完全像上面的脚本一样执行吗?特别是,它必须能够从Unix命令行读取其参数(而不是例如MATLAB GUI的"命令行"),并将它们的数字和打印到标准输出.
注意:此脚本不必是"独立"; IOW,可以假设MATLAB是本地安装的,甚至可以
matlab
在命令行中提到(类似于上面的第一种形式,在python
命令行上显式调用解释器).
谢谢!
PS:不用说,这个剧本是"强大"的对立面,但我的目标是产生一个容易传达的例子.
您可以使用MATLAB函数执行您想要的内容 add_em.m
function add_em(x, y)
x_plus_y = x + y;
disp(x_plus_y);
exit;
Run Code Online (Sandbox Code Playgroud)
然后使用该-r
开关从Unix命令行调用它.例:
matlab -nodesktop -nojvm -nosplash -r "add_em(3, 8)"
Run Code Online (Sandbox Code Playgroud)
这些-
选项可以抑制桌面,java和splash,因此脚本/函数将在不增加额外开销的情况下执行.
您还可以通过将输出重定向到日志文件(用于任何计算)或拖尾(例如,输出以便在终端上打印某些内容)来抑制MATLAB欢迎/版权消息
matlab -nosplash -nodesktop -nojvm -r "add_em(3, 8)" | tail -n 3
Run Code Online (Sandbox Code Playgroud)
更新:刚刚发现这篇帖子/答案及相关信息:抑制Matlab的启动信息