代码之家  ›  专栏  ›  技术社区  ›  bnbfreak

在Matlab中简化穷举搜索的for循环数

  •  -1
  • bnbfreak  · 技术社区  · 6 年前

    我想用matlab中的详尽搜索找到一个客观的结果。假设我有一个向量/矩阵“x”,如下所示:

    x = [a b c;d e f]; a,b,c,d,e,f are Boolean (i.e., 0 or 1)
    

    基于“x”,我有2^6个决定。通常,我们可以使用“for loop”来解决这个问题:

    for t1=0:1
       a = t1;
       for t2=0:1
          b = t2;
             .....
             for t6=0:1
                f = t6;
                g = a + ... + c + d + ... + f;
             end
           .....
        end
    end
    

    然而,如果元素数量增加,这将是一个负担。是否有其他方法可以简化循环而不添加许多“for loop”?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sardar Usama    6 年前

    x numel colon dec2bin '0' sum g

    g = sum(dec2bin(0:2^numel(x)-1)-'0', 2);
    

    g = repmat(uint8(0),1,2^numel(x));
    for k = 0:2^numel(x)-1
        g(k+1) = sum(dec2bin(k)-'0', 2);
    end
    

    uint8