在matlab中生成具有所有可能性的矩阵

时间:2014-04-29 20:19:40

标签: matlab matrix combn

是否有一个简单的命令来执行此操作:

M = 0 0 0
    0 0 1
    0 1 0
    0 1 1
    1 0 0
    1 0 1
    1 1 0
    1 1 1

我发现了这个http://www.mathworks.co.kr/matlabcentral/fileexchange/7147-combn--4-3-,但这在matlab中还不是什么

尝试M = combn([0 1],3)我得到了Undefined function 'combn' for input arguments of type 'double'. in return

2 个答案:

答案 0 :(得分:2)

您正在寻找matlab的perms()功能。

v0=[0 0 0]; 
v1=[1 0 0];
v2=[1 1 0];
v3=[1 1 1]; 
p1=perms(v1);
p2=perms(v2);
combs = cat(1,v0,p1,p2,v3);

这当然会给出所有排列意味着顺序很重要(即使是零),所以只能得到你可以使用的独特组合:

combs=unique(combs,'rows');

给出了:

combs =
     0     0     0
     0     0     1
     0     1     0
     0     1     1
     1     0     0
     1     0     1
     1     1     0
     1     1     1

作为旁注,如果您从文件交换中下载文件,请确保它位于您的matlab路径或当前目录中,这样可以避免未知功能错误。您可以阅读有关matlab路径的工作原理here

答案 1 :(得分:2)

一种简单的方法是生成从02^n-1的所有数字,其中n是行数,并将它们转换为二进制数:

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

或者将this Q&A详述到您的案例中。