是否有一个简单的命令来执行此操作:
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
答案 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)
一种简单的方法是生成从0
到2^n-1
的所有数字,其中n
是行数,并将它们转换为二进制数:
n = 3;
result = dec2bin(0:2^n-1)-'0';
或者将this Q&A详述到您的案例中。