如何:可以从 Unix 命令行获取参数的 MATLAB 脚本
Posted
技术标签:
【中文标题】如何:可以从 Unix 命令行获取参数的 MATLAB 脚本【英文标题】:How : MATLAB script that can get arguments from Unix command-line 【发布时间】:2012-08-31 22:25:26 【问题描述】:为了具体起见,请考虑以下超级简单的 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:不用说,这个脚本是“健壮”的对立面,但我的目标是制作一个易于传达的示例。
【问题讨论】:
这里有你的问题的答案:***.com/questions/3335505/… 否,这个问题是针对 standalone 的(意味着在没有本地安装的 MATLAB 副本的情况下运行) .这就是为什么我在我的问题中强调我不需要这个。特别是,我不想想编译 MATLAB 脚本。 【参考方案1】:您可以在 add_em.m
中使用 MATLAB 函数做您想做的事情
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
【讨论】:
你能澄清一下这个吗? MATLAB 如何知道在哪里可以找到定义函数的 .m 文件?你需要把它放在某个特定的地方才能让它工作吗? 更多关于matlab
的输入参数的信息可以在se.mathworks.com/help/matlab/ref/matlablinux.html找到。
使用-r
,您可以将各种 Matlab 语句连同您的脚本名称一起传递,例如填充您的工作区:matlab -r "a=5;myscript"
将首先创建变量 a,然后运行您的脚本 myscript.m。以上是关于如何:可以从 Unix 命令行获取参数的 MATLAB 脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何将命令行参数传递给 unix/linux 系统上正在运行的进程?