如何在MATLAB中合并矩阵的元素

时间:2016-10-31 09:51:47

标签: arrays matlab

我正在处理二进制数,我有一个1 x 12的行矩阵。

A=[1 0 1 1 0 1 1 1 1 0 0 1]

我想合并3组中的12个项目,以便将它们保存在数组中。 例如。

ARR[1]=1011
ARR[2]=0111
ARR[3]=1001

在MATLAB中有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

Haven现在已经和Matlab合作了很长一段时间了,但我认为它可以满足您的需求:

A=[1 0 1 1 0 1 1 1 1 0 0 1];
n = size(A) / 4;

for 1:n
    ARR(1:4,n) = A(n + (n-1)*4 : n*4);
end

答案 1 :(得分:0)

您可以生成矩阵,其中每一行都是一个组:

A = [1 0 1 1 0 1 1 1 1 0 0 1];
B = reshape(A, [], 3).';

给出

B =
     1     0     1     1
     0     1     1     1
     1     0     0     1

如果您确实需要将组作为嵌套数组,则可以转换为单元数组。但这可能不是必需的,并且效率低于数字矩阵:

B = reshape(A,[],3).';
B = mat2cell(B,ones(size(B,1),1));

给出

B{1} =
     1     0     1     1
B{2} =
     0     1     1     1
B{3} =
     1     0     0     1

答案 2 :(得分:0)

在Matlab中,二进制数表示为字符串。

https://ch.mathworks.com/matlabcentral/newsreader/view_thread/339967

因此,您可以将结果存储为表示二进制数的3x4字符矩阵:

reshape(dec2bin(A), [4 3])'

ans =

1011
0111
1001

或者将它们存储为数字(稍后在需要时使用dec2bin将它们转换为二进制字符串):

bin2dec(reshape(dec2bin(A), [4 3])')

ans =

11
 7
 9