在matlab中将矩阵转换为单元格

时间:2013-02-06 11:57:26

标签: matlab matrix 2d

我有一个像这样的二维矩阵:

0   0   0   0   0   0
0   0   0   0   0   1
0   0   0   0   1   0
0   0   0   0   1   1
0   0   0   1   0   0
0   0   0   1   0   1
0   0   0   1   1   0
0   0   0   1   1   1
0   0   1   0   0   0
0   0   1   0   0   1
0   0   1   0   1   0
0   0   1   0   1   1
0   0   1   1   0   0
0   0   1   1   0   1
0   0   1   1   1   0
0   0   1   1   1   1
0   1   0   0   0   0
0   1   0   0   0   1
0   1   0   0   1   0
0   1   0   0   1   1
0   1   0   1   0   0
0   1   0   1   0   1
0   1   0   1   1   0
0   1   0   1   1   1
0   1   1   0   0   0
0   1   1   0   0   1
0   1   1   0   1   0
0   1   1   0   1   1
0   1   1   1   0   0
0   1   1   1   0   1
0   1   1   1   1   0
0   1   1   1   1   1
1   0   0   0   0   0
1   0   0   0   0   1
1   0   0   0   1   0
1   0   0   0   1   1
1   0   0   1   0   0
1   0   0   1   0   1
1   0   0   1   1   0
1   0   0   1   1   1
1   0   1   0   0   0
1   0   1   0   0   1
1   0   1   0   1   0
1   0   1   0   1   1
1   0   1   1   0   0
1   0   1   1   0   1
1   0   1   1   1   0
1   0   1   1   1   1
1   1   0   0   0   0
1   1   0   0   0   1
1   1   0   0   1   0
1   1   0   0   1   1
1   1   0   1   0   0
1   1   0   1   0   1
1   1   0   1   1   0
1   1   0   1   1   1
1   1   1   0   0   0
1   1   1   0   0   1
1   1   1   0   1   0
1   1   1   0   1   1
1   1   1   1   0   0
1   1   1   1   0   1
1   1   1   1   1   0
1   1   1   1   1   1

我想将此矩阵转换为以下内容:

100000
100001
100010

依旧......

2 个答案:

答案 0 :(得分:1)

尝试mat2cell

 c = mat2cell( x, ones(1, size(x,1)), size(x,2) );

尽管如此,从您的示例来看,您似乎对dec2bin更感兴趣:

 n = 6; % all binary numbers with n bits
 c = dec2bin( 0:(2^n - 1), n );

答案 1 :(得分:1)

@Shai的答案可能正是您所寻找的,但我读了您的问题,询问如何连接矩阵的行以形成矢量。

然后,它取决于您想要输出的格式类型,但这里有一种获取数字向量而不是矩阵的方法。

>> A = eye(3)

A =

     1     0     0
     0     1     0
     0     0     1

将矩阵转换为字符串:

>> B = num2str(A)

B =

1  0  0
0  1  0
0  0  1

提取与数字对应的char(并省略空格):

>> C = B(:,1:3:end)

C =

100
010
001

这里你已经将你的值作为字符串,这可能是你想要的(即使它不是真正的矢量)。您也可以将其转换回数字,但随后您将获得以下类型的输出:

>> D = str2num(C)

D =

   100
    10
     1