时间:2010-07-26 14:00:43

标签: matlab command-line-arguments matlab-deployment matlab-compiler

3 个答案:

答案 0 :(得分:23)

MATLAB网站有一个 worked-through example包含有关如何编译简单应用程序以及如何在另一台计算机上部署它的说明。从本质上讲,您需要安装 MATLAB Compiler Runtime和您的应用程序;安装程序 对于运行时应该已经存在于MATLAB编译器中 安装。

要将命令行参数传递给MATLAB可执行文件,请定义一个 可执行文件中的单个MATLAB函数:参数 函数取自命令行参数(第一个命令行参数是第一个参数,依此类推)。

例如,使用以下内容创建文件echo.m 内容:

function exitcode = echo(a, b)

display(a);
display(b);

exitcode = 0;

然后,您可以编译此文件并使用echo 1 2 3和它运行它 将打印a=1 b=2

请注意,当从命令行获取参数时,它们是 作为 strings 传递给函数,因此您需要将它们转换为 使用str2num函数的数字。例如:

function rc = display_product(a, b)

a = str2num(a);
b = str2num(b);

display(a*b);

rc = 0;

答案 1 :(得分:2)

答案 2 :(得分:2)

我遇到了同样的问题并搜索了一个问题的通用解决方案,在脚本中,参数作为字符串传递,但需要作为标量或向量。 假设您具有以下功能

function myfunc(arg1, arg2, varargs)
end

你可能希望能够像

那样称呼它
myfunc(1, [1 2 3], 'optional1', 2)

也喜欢

myfunc('1', '[1 2 3]', 'optional1', '2')

以便您可以编译它并在命令行上使用它,如

myfunc 1 '[1 2 3]' optional1 2

为此,我写了以下函数:

function r=evalArguments(parser, arguments)
    % Evaluates parsed arguments' values.  
    % Given a parser containing parsed arguments, all string values of the
    % arguments specified by parameter "arguments" are evaluated 
    % and the complete results is returned in a new struct.

    r = parser.Results;
    for j=1:length(arguments)
        argValue = r.(arguments{j});
        if ischar(argValue)
            r.(arguments{j}) = eval(argValue);
        end
    end
end

然后我可以像myfunc一样使用p = inputParser; p.addRequired('arg1'); p.addRequired('arg2'); p.addParameter('optional1', 0); p.parse(arg1, arg2, varargin{:}); nonStringArguments = {'arg1', 'arg2', 'optional1'}; args = evalArguments(p, nonStringArguments); ... x = args.arg1; y = args.arg2; z = args.optional1;

[{"Title":"Message","count":"180","Number":"200"},
 {"Title":"Message","count":"200","Number":"400"}]

由于我没有找到开箱即用的方法,我在此发布此解决方案并希望它对其他人也有用。 如果有更好的方法来实现这一目标,请告诉我。