在MATLAB中动态更改for循环

关节炎

设置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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章