matlab从命令linux line

时间:2016-08-02 14:23:49

标签: linux matlab

有没有办法从linux命令行运行matlab脚本? 例如,我有以下简单的脚本" test.m":

x = [1,2,3];
y = [2;3;4];

prod = x*y
disp(prod)

所以我想要的是能够从linux命令行执行该脚本而无需打开matlab GUI或matlab命令行。也就是说,我期待类似的东西:

~$ matlab test.m

我希望在linux命令行上看到该产品的结果。

我知道你可以用python做到这一点,例如

~$ python test.py

但是想知道是否可以用matlab实现同样的目标。

3 个答案:

答案 0 :(得分:11)

为了运行脚本,您可以打开Matlab(您可以使用-nodisplay-nodesktop标志阻止在没有GUI的情况下运行它),然后使用run命令运行脚本,最后使用exit关闭matlab。

您可以通过一条指令从终端完成所有这些操作:

matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"

然而,在运行脚本之前,Matlab会将欢迎消息输出到控制台。要删除欢迎消息,只需使用tail -n +11跳过前11行(10个,取决于您的Matlab版本)

所以你的最后指示将是:

matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11

答案 1 :(得分:11)

从R2019a开始,首选方法是test.m脚本:

matlab -batch "test"

这有几个优点,主要是不需要所有-no标志,并且如果 test.m (必须在搜索路径上)包含错误,MATLAB将以非零状态退出

在文档页面上,matlab (Linux)

非交互地执行MATLAB脚本,语句或函数。 MATLAB:

  • 从没有台式机开始
  • 不显示初始屏幕
  • 执行声明
  • 禁止更改首选项
  • 禁用工具箱缓存
  • 将文本记录到stdoutstderr
  • 不显示对话框
  • 如果成功执行 script
  • 以退出代码0自动退出。否则,MATLAB将以非零的退出代码终止。

声明是用双引号引起来的MATLAB代码。如果 statement 是MATLAB函数或脚本的名称,请不要指定文件扩展名。任何必需的文件都必须在MATLAB搜索中 路径或启动文件夹中。

在非交互式脚本或命令行中使用-batch选项 工作流程。请勿将此选项与-r选项一起使用。

要测试MATLAB会话是否以批处理模式运行,请调用 batchStartupOptionUsed功能。

示例:-batch "myscript"

答案 2 :(得分:0)

我创建了一个名为“ runm”的基本shell脚本,并放入了我的路径

$ runm mymatlab.m

# simple script to run matlab script
if [ $# -eq 0 ]
  then
    echo "please pass m script"
fi

matlab -nodisplay -nosplash -nodesktop -r "run('$1');"