【问题标题】:List all possible combinations for a vector列出向量的所有可能组合
【发布时间】:2015-08-15 20:39:08
【问题描述】:

假设我有一个向量[1 0],我想列出该向量中适合1x3 向量的所有可能的数字组合。 IE。 [1 1 1] [1 1 0] [1 0 0] [0 0 0] [0 0 1] [0 1 1] [1 0 1] [0 1 0].

我已经这样做了(这里是link),但是当我在第 10 维做事情时,我的功能很慢。 那是我运行combos([1 0],10) 时,需要几分钟时间。

我想知道 matlab 是否基本上有一个已经可以做到这一点的函数(类似于 permsnchoosek),或者是否有人有比我更快的方法。

【问题讨论】:

    标签: arrays matlab combinations permutation


    【解决方案1】:

    这是一种非常有趣的方式来寻求一种方法来生成 0 到 2^n-1 之间的二进制数(n=位数或向量的长度)

    dec2bin(0:2^n-1)=='1'
    

    对于更一般的情况,如果您有另一个向量而不是 [0,1],请使用来自 matlab 文件交换的 all_comb

    all_comb([0,1],n)
    

    【讨论】:

    • 那行得通,但你能解释一下dec2bin 的作用吗?
    • @asosnovsky 你想要的是从02^n-1 的所有数字的二进制扩展。这就是dec2bin 达到您想要的结果的原因
    【解决方案2】:

    你可以滥用de2bi

    n = 3;
    out = de2bi(0:(2^n)-1)
    

    需要通信系统工具箱。如果没有,请前往Daniel's Answer

    【讨论】:

      【解决方案3】:

      我觉得你也可以

      combvec([1 0],[1 0],[1 0])

      不确定这是否比上面建议的更快。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2017-04-01
        • 2013-06-04
        相关资源
        最近更新 更多