我想要2^n矩阵,其中0和1的所有组合。例如,对于n = 6(n =#行x#列),array{2}=[0 0 0; 0 0 1]
... array{64}=[1 1 1;1 1 1]
。我使用MATLAB,并且我遇到了combn.m
(M = COMBN(V,N))返回向量V中元素的N个元素的所有组合.M具有大小(长度(V).N)。 ),dec2bin()
但我不能说得很对。我的另一个想法是创建一个大矩阵,然后将其分割成2^n个矩阵。例如,对于n = 6(2×3),我这样做M=combn([0 1],3)
这使我:如何用所有组合填充二进制矩阵?
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
然后,使用此M
创建这样M2=combn(M,2)
较大矩阵,但是这将产生错误的结果。不过,如果我串联M个行是这样的:
M=combn([000;010;100;001;110;011;101;111],2)'
我得到的东西更接近我的期望即
M =
Columns 1 through 21
0 0 0 0 0 0 0 0 10 10 10 10 10 10 10 10 100 100 100 100 100
0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110
Columns 22 through 42
100 100 100 1 1 1 1 1 1 1 1 110 110 110 110 110 110 110 110 11 11
11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10
Columns 43 through 63
11 11 11 11 11 11 101 101 101 101 101 101 101 101 111 111 111 111 111 111 111
100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101
Column 64
111
111
在那里我能得到的每一列,并分别将其转换成64 matrices.So,例如列1将从[0;0]
转换为[0 0 0;0 0 0]
等。但是,我相信这是一个更容易的问题,它可以在较短的时间内优雅地解决。
你怎么控制n?我的意思是n可以是6但是2行3列。你能把它与上面的例子联系起来吗? – JustCurious
@JustCurious对不起,我没有仔细阅读你的问题。我现在有,我不明白你想要什么 –
我想要2^n个二进制矩阵。每个矩阵应该与另一个不同,但具有相同的#rows x #columns。重要的是,n =#行x#列。所以对于n = 6,我想要有64个矩阵,每个矩阵都有不同的零和一个组合。现在有点清楚了吗? – JustCurious