将许多for循环组合成一个

时间:2017-02-15 17:09:15

标签: matlab loops for-loop

我正在处理一个问题,最初我需要使用嵌套的for循环。我想知道是否有办法将大量for循环合并为一个。

除此之外,我找到了答案here,但它需要先生成所有可能的组合,这在内存要求方面可能不好。我的for循环由许多彼此独立的变量组成,用于评估成本函数,例如:

for x1 = 1:10
    for x2 = 2:15
        for x3 = 3:5
            for x4 = 7:9
                %and so on
                cost = J(x1, x2, x3, x4) %or more
            end
        end
    end
end

如果我事先知道需要使用多少变量,有没有办法让这个块变得更简单?

1 个答案:

答案 0 :(得分:1)

以下功能可以完成这项工作,但它会比原始代码

function loop(f, args, varargin)
if ~isempty(args)
    for arg = args{1}
        loop(f, args(2:end), varargin{:}, arg);
    end
else
    f(varargin{:});
end

您可以使用

开始计算
loop(@J, {1:10, 2:15, 3:5, 7:9});