【发布时间】:2019-01-07 10:15:10
【问题描述】:
我有一个参数列表,我需要在这个列表中评估我的方法。现在,我就是这样做的
% Parameters
params.corrAs = {'objective', 'constraint'};
params.size = {'small', 'medium', 'large'};
params.density = {'uniform', 'non-uniform'};
params.k = {3,4,5,6};
params.constraintP = {'identity', 'none'};
params.Npoints_perJ = {2, 3};
params.sampling = {'hks', 'fps'};
% Select the current parameter
for corrAs_iter = params.corrAs
for size_iter = params.size
for density_iter = params.density
for k_iter = params.k
for constraintP_iter = params.constraintP
for Npoints_perJ_iter = params.Npoints_perJ
for sampling_iter = params.sampling
currentParam.corrAs = corrAs_iter;
currentParam.size = size_iter;
currentParam.density = density_iter;
currentParam.k = k_iter;
currentParam.constraintP = constraintP_iter;
currentParam.Npoints_perJ = Npoints_perJ_iter;
currentParam.sampling = sampling_iter;
evaluateMethod(currentParam);
end
end
end
end
end
end
end
我知道它看起来很难看,如果我想添加一种新类型的参数,我必须编写另一个 for 循环。有什么办法,我可以矢量化这个吗?或者也许使用 2 个 for 循环而不是这么多。
我尝试了以下方法,但没有得到我需要的结果。
for i = 1:numel(fields)
% if isempty(params.(fields{i}))
param.(fields{i}) = params.(fields{i})(1);
params.(fields{i})(1) = [];
end
【问题讨论】:
-
虽然它不能回答您提出的问题,但此问题中的概念可能有助于解决您的潜在问题:stackoverflow.com/questions/21895335/…