如何从Linux命令行调用MATLAB函数?

abl*_*mit 30 linux matlab command-line

基本上我有一个m看起来像的文件

function Z=myfunc()
    % Do some calculations
    dlmwrite('result.out',Z,',');
end
Run Code Online (Sandbox Code Playgroud)

我只是想从命令行执行它而不进入MATLAB.我试了几个选项(-nodisplay,-nodesktop,-nojvm,-r,等),没有一次成功.我最终进入MATLAB并输入"quit"退出.

解决办法是什么?

小智 25

MATLAB可以运行脚本,但不能运行命令行中的函数.这就是我做的:

档案matlab_batcher.sh:

#!/bin/sh

matlab_exec=matlab
X="${1}(${2})"
echo ${X} > matlab_command_${2}.m
cat matlab_command_${2}.m
${matlab_exec} -nojvm -nodisplay -nosplash < matlab_command_${2}.m
rm matlab_command_${2}.m
Run Code Online (Sandbox Code Playgroud)

通过输入来调用它:

./matlab_batcher.sh myfunction myinput
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是不正确的.Matlab*可以*从命令行运行函数.试试`matlab -nodisplay'funcname arg1 arg2 arg3 argN"`.唯一的限制是所有参数都是字符串. (12认同)
  • @gerrit.如果你添加括号,参数也可以是数字:``matlab -r"myfunc(1,2); exit"`` (8认同)

小智 20

使用:

matlab -nosplash -nodesktop -logfile remoteAutocode.log -r matlabCommand
Run Code Online (Sandbox Code Playgroud)

确保matlabCommand将出口作为最后一行.


Dav*_*ria 12

你可以调用这样的函数:

matlab -r"yourFunction(0)"

  • 制作``matlab -r"func(arg1,arg2,..);如果你不希望MATLAB在运行函数后继续存在,则退出"``. (2认同)

小智 7

这是我找到的一个简单的解决方案.

我有一个函数func(var),我想从shell脚本运行并传递var的第一个参数.我把它放在我的shell脚本中:

matlab -nodesktop -nosplash -r "func('$1')"
Run Code Online (Sandbox Code Playgroud)

这对我来说就像一种享受.诀窍是你必须使用双引号和MATLAB的"-r"命令,并使用单引号将bash参数传递给MATLAB.

只需确保MATLAB脚本的最后一行是"退出"或运行

matlab -nodesktop -nosplash -r "func('$1'); exit"
Run Code Online (Sandbox Code Playgroud)