【发布时间】:2014-05-31 17:50:09
【问题描述】:
我想要 2^n 个矩阵,其中包含 0 和 1 的所有组合。例如,对于 n=6 (n=#rows x #columns) array{1}=[0 0 0; 0 0 0],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 的大小为 (length(V).^N)-by- N.), dec2bin() 但我不能完全正确。我的另一个想法是创建一个大矩阵,然后将其拆分为 2^n 个矩阵。例如,对于 n=6(2 x 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 个矩阵。因此,例如,第 1 列将从 [0;0] 转换为 [0 0 0;0 0 0] 等。但是,我相信它可以是一个更容易的问题在更短的时间内优雅地解决。
【问题讨论】:
标签: arrays matlab matrix binary