在matlab中获取命令行参数

Ser*_*nov 6 matlab command-line

这可能太容易了,但我不能谷歌答案:如何在matlab脚本中获取命令行参数.

我运行matlab matlab -nodisplay -r "run('script.m')",我希望将所有参数作为列表返回.类似于python的东西sys.argv.我怎样才能做到这一点?

我正在使用Linux Mint和MATLAB 2015a.

m.s*_*.s. 3

我不知道方向解决方案(如内置函数)。但是,您可以使用以下解决方法之一:

1、方法

这仅适用于 Linux:

pid_wrapper.m创建一个包含以下内容的文件:

function [] = pid_wrapper( parent_pid )

[~, matlab_pid] = system(['pgrep -P' num2str(parent_pid)]);
matlab_pid = strtrim(matlab_pid);
[~, matlab_args] = system(['ps -h -ocommand ' num2str(matlab_pid)]);
matlab_args = strsplit(strtrim(matlab_args));
disp(matlab_args);

% call your script with the extracted arguments in matlab_args
% ...

end
Run Code Online (Sandbox Code Playgroud)

像这样调用 MATLAB:

matlab -nodisplay -r "pid_wrapper($$)"
Run Code Online (Sandbox Code Playgroud)

这会将 MATLAB 父进程(即启动 MATLAB 的 shell)的进程 ID 传递给wrapper. 然后,这可用于查找子 MATLAB 进程及其命令行参数,然后您可以在 中访问这些参数matlab_args

2、方法

此方法与操作系统无关,并且不会真正找出命令行参数,但由于您的目标是将附加参数传递给脚本,因此它可能适合您。

vararg_wrapper.m创建一个包含以下内容的文件:

function [] = wrapper( varargin )

% all parameters can be accessed in varargin
for i=1:nargin
    disp(varargin{i});
end

% call your script with the supplied parameters 
% ...

end
Run Code Online (Sandbox Code Playgroud)

像这样调用 MATLAB:

matlab -nodisplay -r "vararg_wrapper('first_param', 'second_param')"
Run Code Online (Sandbox Code Playgroud)

这将传递{'first_param', 'second_param'}vararg_wrapper您,然后您可以转发到您的脚本。