Преобразовать вектор двоичных чисел в вектор десятичных - PullRequest
0 голосов
/ 22 сентября 2018

Преобразование (надеюсь, эффективно) из двоичного числа b в десятичное число d равно

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

Как мне эффективно (читай: не использовать цикл for) преобразовать вектордвоичных чисел bvec, например, три двоичных числа в bvec = logical([0 1;1 0;1 1]) в вектор десятичных чисел?

1 Ответ

0 голосов
/ 22 сентября 2018

Использовать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...