Matlab 将二进制数向量转换为小数向量

Matlab 将二进制数向量转换为小数向量,matlab,Matlab,从二进制数b到十进制数d的转换(希望有效)是 d = sum(b.*2.^(numel(b)-1:-1:0)) + 1 如何有效地(阅读:不使用for循环)将二进制数向量bvec,例如bvec=logical([01;10;11])中的三个二进制数转换为十进制数向量?使用bin2dec >> str = reshape('0001011100110001', 8, [])' str = 2×8 char array '00010111' '00110001

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

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

如何有效地(阅读:不使用for循环)将二进制数向量
bvec
,例如
bvec=logical([01;10;11])
中的三个二进制数转换为十进制数向量?

使用
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'