列出向量的所有可能组合

List all possible combinations for a vector

假设我有一个向量 [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),或者是否有人有比我做的更快的方法。

你可以滥用 de2bi :

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

不过需要 通信系统工具箱。如果没有,请选择 .

求生成0到2^n-1(n=位数或向量长度)二进制数的方法非常有趣

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

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

all_comb([0,1],n)

我觉得你也可以

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

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