将二进制数向量转换为十进制向量

时间:2018-09-22 03:26:52

标签: matlab

从二进制数b到十进制数d的一种转换(很有希望)是

d = sum(b.*2.^(numel(b)-1:-1:0)) + 1

我将如何高效地(阅读:不使用for循环)将二进制数字bvec的矢量,{em> eg bvec = logical([0 1;1 0;1 1])中的三个二进制数字转换为矢量十进制数字?

1 个答案:

答案 0 :(得分:1)

使用bin2dec

>> str = reshape('0001011100110001', 8, [])'

str =

  2×8 char array

    '00010111'
    '00110001'

>> bin2dec(str)

ans =

    23
    49

-Matlab主要用于列,因此,如果不仔细进行操作,重塑字符串可能会导致意外结果:

>> abc = 'abcdefghijklmnop';
>> reshape(abc, [], 8) % does not maintain original order

ans =

  2×8 char array

    'acegikmo'
    'bdfhjlnp'

>> reshape(abc, 8, [])' % maintains original order

ans =

  2×8 char array

    'abcdefgh'
    'ijklmnop'