Integer массив для двоичного массива
У меня есть целочисленный массив:
a=[3,4,5,6,7];
Я хочу преобразовать его в двоичный массив с четырьмя битами каждый. Для указанного массива integer я бы хотел получить следующий двоичный массив:
abinary=[0,0,1,1, 0,1,0,0, 0,1,0,1, 0,1,1,0, 0,1,1,1];
Есть ли какой-нибудь быстрый способ сделать это?
Ответы
Ответ 1
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))'
Ответ 2
Вы можете использовать функцию 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
Ответ 3
Поздний ответ, который я знаю, но у MATLAB есть функция, чтобы сделать это непосредственно de2bi
out = de2bi([3,4,5,6,7], 4, 'left-msb');