Целочисленный массив в двоичный массив - PullRequest
10 голосов
/ 22 апреля 2010

У меня есть целочисленный массив:

a=[3,4,5,6,7];

Я хочу преобразовать его в двоичный массив с четырьмя битами каждый. Для вышеуказанного целочисленного массива я хотел бы получить следующий двоичный массив:

abinary=[0,0,1,1, 0,1,0,0, 0,1,0,1, 0,1,1,0, 0,1,1,1];

Есть ли быстрый способ сделать это?

Ответы [ 3 ]

16 голосов
/ 22 апреля 2010

Matlab имеет встроенную функцию DEC2BIN . Он создает массив символов, но его легко превратить в числа.

%# create binary string - the 4 forces at least 4 bits
bstr = dec2bin([3,4,5,6,7],4)

%# convert back to numbers (reshape so that zeros are preserved)
out = str2num(reshape(bstr',[],1))'
4 голосов
/ 22 апреля 2010

Вы можете использовать функцию BITGET :

abinary = [bitget(a,4); ...  %# Get bit 4 for each number
           bitget(a,3); ...  %# Get bit 3 for each number
           bitget(a,2); ...  %# Get bit 2 for each number
           bitget(a,1)];     %# Get bit 1 for each number
abinary = abinary(:)';      %'# Make it a 1-by-20 array
1 голос
/ 05 февраля 2016

Поздний ответ, я знаю, но у MATLAB есть функция, которая делает это напрямую de2bi

out = de2bi([3,4,5,6,7], 4, 'left-msb');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...