Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过几个';名称、值';参数转换为MATLAB函数_Matlab_Function_Parameters - Fatal编程技术网

通过几个';名称、值';参数转换为MATLAB函数

通过几个';名称、值';参数转换为MATLAB函数,matlab,function,parameters,Matlab,Function,Parameters,我试图找出如何将几个可选的“名称”、“值”对参数传递给MATLAB函数,如下所示: 我的意思是,我的参数存储在一个结构中,但是这个结构并不总是包含相同数量的参数对。例如,我可以有以下结构: options.NumNeighbors = 3 options.Standardize = 1; 因此,函数调用将是: output = fitcknn(X,Y,'NumNeighbors',options.NumNeighbors,'Standardize',options.Standardize);

我试图找出如何将几个可选的“名称”、“值”对参数传递给MATLAB函数,如下所示:

我的意思是,我的参数存储在一个结构中,但是这个结构并不总是包含相同数量的参数对。例如,我可以有以下结构:

options.NumNeighbors = 3
options.Standardize = 1;
因此,函数调用将是:

output = fitcknn(X,Y,'NumNeighbors',options.NumNeighbors,'Standardize',options.Standardize);
但是,下次我可以:

options.NumNeighbors = 3
options.Standardize = 1;
options.ScoreTransform = 'logit';
因此,函数调用将有另一个参数对:

output = fitcknn(X,Y,'NumNeighbors',options.NumNeighbors,'Standardize',...
options.Standardize,'ScoreTransform',options.ScoreTransform);
我想要的是动态调用函数,而不必担心对“Name”-“Value”参数的最终数目。我已经测试过类似的东西,但它不起作用:

options = {'NumNeighbors',3,'Standardize',1};
output = fitcknn(X,Y,options);
有什么想法吗


提前感谢

在函数声明中使用
varargin
函数。它将所有额外的输入收集到一个单元格数组中,您可以在函数内部对其进行解析

您的函数声明如下所示:

function [out]=myfunc(in1,in2,varargin)
% in1 and in2 are mandatory inputs
[out]=myfunc(in1,in2,optionalIn1,optionalIn2,...,optionalInN)
你可以这样调用你的函数:

function [out]=myfunc(in1,in2,varargin)
% in1 and in2 are mandatory inputs
[out]=myfunc(in1,in2,optionalIn1,optionalIn2,...,optionalInN)
然后,您将在函数的工作区中获得一个单元格数组
varargin
,其中:

varargin{1}=optionalIn1;
varargin{2}=optionalIn2;
...
varargin{N}=optionalInN;

然后,您可以根据需要对其进行分析。

您可以通过以下方式进行分析:

options = {'NumNeighbors',3,'Standardize',1};
output = fitcknn(X,Y,options{:});
您可以使用列表作为输入。 所以只需在选项输入中添加一个{:}

options = {'NumNeighbors',3,'Standardize',1};
output = fitcknn(X, Y, options{:});
选项输入可以通过一个简单的
for
循环从结构生成

(在下面的示例中,我使用的是
listdlg
而不是
fitchnn
,因为我目前无法获得工具箱)


这个答案不能回答问题。是的,我误解了这个问题,我以为问这个问题的人会知道
{:}