Matlab二进制文件在shell中不接受其输入值

时间:2019-06-25 23:44:03

标签: linux matlab shell binaryfiles

我已经编译了Matlab函数,并试图在shell脚本中运行生成的二进制可执行文件(我确定会进行转换)。在Matlab中,我通过以下方式运行My_function脚本:

names_ct{1}  = './file_ct_1';
names_ct{2}  = './file_ct_2';
names_mk{1}  = './file_mk_1';
names_mk{2}  = './file_mk_2';

My_function(names_ct, names_mk, 0);

但是,当我在shell脚本中使用以下命令运行已编译的二进制文件时,会出现错误。

My_function ./file_ct_1 ./file_ct_2 ./file_mk_1 ./file_mk_2 0

错误是:

Error using My_function
Too many input arguments.
MATLAB:TooManyInputs
Error: Too many input arguments.
ERROR My_function ./file_ct_1 ./file_ct_2 ./file_mk_1 ./file_mk_2 0

任何人都知道发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

您的函数仅接受三个参数,而您给了它五个。 您可以避免使用单元格数组并为每个元素创建一个单独的变量吗? 例如:

names_ct1  = './file_ct_1';
names_ct2  = './file_ct_2';
names_mk1  = './file_mk_1';
names_mk2  = './file_mk_2';
My_function(names_ct1 ,names_ct2, names_mk1, names_mk2, 0);

答案 1 :(得分:0)

每个命令行参数都作为字符串传递给您的函数。您不能传递单元格数组,数字数组或其他任何内容。您需要编写函数以接受字符串输入参数。

如果需要可变数量的输入参数,请使用

声明函数
function name(varargin)

(请参阅the docs

然后,在函数中,varargin是一个包含每个输入字符串的单元格数组。 nargin等于numel(varargin),并给出输入参数的数量。

如果需要,您可以进一步使用inputParser简化输入参数的解析。分离您似乎需要的两种不同类型的输入参数的方法。