连接从十进制到二进制转换获得的二进制字符串

时间:2017-01-06 18:49:32

标签: arrays string matlab binary-data

我想为每个元素侧面放置二进制等效数字,即最终矩阵Concatenated_A的大小为m by nbits*n,其中[m,n] = size(A);

A = [5, 5,  4,  10, 4;
    10, 10, 10, 10, 5;

    ];

我做了一次尝试,但结果是错误的。我需要帮助才能正确实现连接。谢谢

[m,n] = size(A);
numbits = 4;
for m = 1:M

Abin = dec2bin(A(m,:),numbits);
for j = 1:size(Abin,1)
Concatenated_A(m,:) = Abin(j,:);
end

end

A(1,:) = 5, 5, 4, 10, 4中的第一行;它的每个元素的十进制转换将给出如下矩阵。

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

然后,我该怎么做这样的事情:

Concatenated_A(1,:) = [0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0]

A中的每一行重复上述操作。

1 个答案:

答案 0 :(得分:1)

您可以转置dec2bin的结果,以便二进制表示沿着列向下,然后将其重新整形为所需的形状,以便每行都在其自己的行上。重塑后,我们再次进行转置,以便行再次穿过行。此外,我们需要确保在开始之前转置A,以便我们沿着行进行编码。

out = reshape(dec2bin(A.', numbits).', [], size(A, 1)).'
%   01010101010010100100
%   10101010101010100101

或者如果你想要一个逻辑矩阵,你可以将你的角色数组与角色'1'

进行比较
out = reshape(dec2bin(A.', numbits).', [], size(A, 1)).' == '1'
%   0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0
%   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1