运行 来自 CLI 的 matlab 函数

Running matlab function from CLI

我写了一个简单的 .m 文件并尝试 运行 在没有图形的命令行上。

这里是mymax.m:

max =  n1
if(n2 > max)
    max = n2
end
exit

但是,当我尝试通过命令行 运行 它时,它显示了一些内容,但我看不到计算值:

$ /export/apps/mathematics/matlab2015b/bin/matlab -nodisplay -nodesktop -nosplash -r mymax\(2,4\)

                                    < M A T L A B (R) >
                          Copyright 1984-2015 The MathWorks, Inc.
                           R2015b (8.6.0.267246) 64-bit (glnxa64)
                                      August 20, 2015


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Attempt to execute SCRIPT mymax as a function:
/home/mahmood/matlab-test/mymax.m

>> 

为什么这不起作用?

如错误所述,您调用 mymax 就好像它是一个函数(通过提供输入参数);但是,它是一个不能接受输入参数的脚本。你有两个选择

发挥作用

function mx = mymax(n1, n2)
    mx = n1;

    if n2 > mx
        mx = n2;
    end
end

然后从命令行

$ matlab -nodisplay -nodesktop -nosplash -r "mymax(2,4); exit"

初始化n1n2

您的脚本依赖于全局工作区中存在的变量 n1n2。您需要在执行脚本之前定义这些变量。

-r 标志允许您在命令行指定任何 MATLAB 命令为 运行。您可以通过在调用脚本之前简单地插入这些命令来初始化 n1n2 的值(就像您在典型的 MATLAB 会话中所做的那样)。

$ matlab -nodisplay -nodesktop -nosplash -r "n1 = 2; n2 = 4; mymax"

缺少输出

您没有看到任何计算值的原因是您实际上没有返回它们或对它们做任何有用的事情。如果要查看这些值,可以添加 disp 语句。或者,如果您需要将它们用于其他用途,您可以随时将它们写到其他软件可以访问的文件中。

另一个选项是使用 -logfile 选项将 all 命令 window 输出写入日志文件。

$ matlab -nodesktop -nodisplay -nosplash -logfile log.txt -r "mymax(2,4); exit"