【发布时间】:2018-09-22 03:26:52
【问题描述】:
从二进制数 b 到十进制数 d 的(希望是有效的)转换是
d = sum(b.*2.^(numel(b)-1:-1:0)) + 1
我如何有效地(阅读:不使用 for 循环)将二进制数向量 bvec,例如 bvec = logical([0 1;1 0;1 1]) 中的三个二进制数转换为十进制数向量?
【问题讨论】:
标签: matlab
从二进制数 b 到十进制数 d 的(希望是有效的)转换是
d = sum(b.*2.^(numel(b)-1:-1:0)) + 1
我如何有效地(阅读:不使用 for 循环)将二进制数向量 bvec,例如 bvec = logical([0 1;1 0;1 1]) 中的三个二进制数转换为十进制数向量?
【问题讨论】:
标签: matlab
使用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'
【讨论】: