gpt4 book ai didi

matlab - 将几个 'Name, Value' 参数传递给 MATLAB 函数

转载 作者:行者123 更新时间:2023-12-02 17:24:32 28 4
gpt4 key购买 nike

我想弄清楚如何将几个可选的“名称”、“值”对参数传递给 MATLAB 函数,如下所示:https://es.mathworks.com/help/stats/fitcknn.html

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

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);

我想要的是动态调用函数而不用担心“名称”-“值”参数对的最终数量。我已经测试过类似的东西,但它不起作用:

options = {'NumNeighbors',3,'Standardize',1};
output = fitcknn(X,Y,options);

有什么想法吗?

提前致谢

最佳答案

你可以使用 comma-separated列表作为输入。所以只需在您的选项输入中添加一个 {:}。

options = {'NumNeighbors',3,'Standardize',1};
output = fitcknn(X, Y, options{:});

选项输入可以通过简单的 for 循环从结构中生成。

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

options.ListString = {'a','b'};
options.Name = 'Test';
options.ListSize = [200 300];

optInput = {};
for optField = fieldnames(options)'
optInput{end+1} = char(optField);
optInput{end+1} = options.(char(optField));
end
listdlg(optInput{:})

关于matlab - 将几个 'Name, Value' 参数传递给 MATLAB 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com