设置for循环时,我希望能够遍历未知数量的参数。
通过输入文件,用户可以根据需要设置任意数量的循环参数,并且我希望能够对它们进行循环,而与他们设置的参数数量无关。循环输入示例:(请注意,我的输入也可以是字符串和数字组合的列表)
情况1:
- 重量45000:5000:75000
- 海拔10000
- 速度0.2:0.1:0.9
情况2:
- 重量30000
- 海拔1000:1000:10000
- 襟翼10、20
- 温度-10:1:10
列表的长度可以不同,并且可以包含0-15个变量。我知道解决方法,但是使用一堆嵌套的for循环执行此操作确实很麻烦。我正在寻找一种建立方法的方法,也许是使用Recursion的方法,其中的代码将建立一个适当的for循环系统,而不管涉及的参数数量如何,并且仍然跟踪这些变量。
递归。
您尚未对此提出任何速度要求。这个答案很慢,内存使用不佳,但这是该想法最简单的实现。存在许多更好的实现,这些实现更加复杂,使用更少的内存并且显着更快。取决于您需要内圈的紧密程度...
parms.weight = [45000:5000:75000];
parms.alt = 10000;
parms.Speed = 0.2:0.1:0.9;
然后,将您的模拟器定义为:
function result = simulation(parms)
fieldNames = fieldnames(parms)
result = [];
for ix = 1 : numel(fieldNames)
if 1 < numel(parms.(fieldNames{ix}))
list = parms.(fieldNames{ix});
for jx = 1 : numel(list)
tmpParms = parms;
tmpParms.(fieldNames{ix}) = list(jx);
tmpResult = simulation(tmpParms);
result = [result; tmpResult];
end
return;
end
end
if 0 == numel(result)
% Do the real simulation here.
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句