art*_*eam 8 matlab for-loop dynamic
设置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循环来执行此操作非常麻烦.我正在寻找一种方法来设置一个方法,可能使用递归,其中代码将建立一个适当的for循环系统,无论涉及多少参数,并仍然跟踪这些变量.
递归。
您还没有对此提出任何速度要求。这个答案很慢,内存使用率很低,但却是这个想法的最简单的实现。存在许多更好的实现,它们更复杂,使用更少的内存,并且速度更快。取决于你需要内环有多紧......
parms.weight = [45000:5000:75000];
parms.alt = 10000;
parms.Speed = 0.2:0.1:0.9;
Run Code Online (Sandbox Code Playgroud)
然后,定义你的模拟器,如下所示:
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
Run Code Online (Sandbox Code Playgroud)