从二进制数b
到十进制数d
的一种转换(很有希望)是
d = sum(b.*2.^(numel(b)-1:-1:0)) + 1
我将如何高效地(阅读:不使用for循环)将二进制数字bvec
的矢量,{em> eg bvec = logical([0 1;1 0;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'