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

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:不用说,这个剧本是"强大"的对立面,但我的目标是产生一个容易传达的例子.

gev*_*ang 9

您可以使用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的启动信息

  • 你能澄清一下这个吗?MATLAB如何知道在哪里找到定义函数的.m文件?你需要把它放在特定的地方吗? (3认同)