9

只是为了具体起见,在一个名为 的文件中考虑以下超级简单的 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

我现在可以运行这个脚本,并从 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:不用说,这个脚本是“健壮”的对立面,但我的目的是产生一个容易传达的例子。

4

1 回答 1

10

你可以让一个 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

更新:刚刚发现这篇文章/答案与相关信息:抑制 Matlab 的启动消息

于 2012-08-31T23:26:37.043 回答