从CLI运行matlab功能

时间:2016-03-24 18:51:27

标签: linux matlab command-line-interface

我写了一个简单的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 >>

from sklearn import metrics

>>> metrics.pairwise.pairwise_distances(
    pids[['a', 'b', 'c']].as_matrix(),
    metric='mahalanobis')
array([[ 0.        ,  2.15290501,  3.54499647],
       [ 2.15290501,  0.        ,  2.62516666],
       [ 3.54499647,  2.62516666,  0.        ]])

但是,当我尝试通过命令行运行它时,它说了些什么,我看不到计算值:

$j('#hide_' + records[i].idOne).parent('.hideEmail').hide().next('.showResreved').show();

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

如错误所示,您正在调用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选项将所有命令窗口输出写入日志文件。

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