Matlab двоичное кодирование - PullRequest
4 голосов
/ 12 ноября 2010

У меня есть вектор, содержащий серию целых чисел, и я хочу взять все числа, преобразовать их в соответствующие им двоичные формы и объединить все полученные двоичные значения вместе.Есть ли простой способ сделать это?

например, a = [1 2 3 4] -> b = [00000001 00000010 00000011 00000100] -> c = 00000001000000100000001100000100

Ответы [ 3 ]

4 голосов
/ 12 ноября 2010

Попробуйте:

b = dec2bin(a)
4 голосов
/ 12 ноября 2010

Как указано в других ответах, функция DEC2BIN является одним из вариантов, который необходимо решить для этой проблемы. Однако, как указывает этот другой вопрос SO , он может быть очень медленным вариантом при преобразовании большого числа значений.

Для более быстрого решения вы можете вместо этого использовать функцию BITGET следующим образом:

a = [1 2 3 4];               %# Your array of values
nBits = 8;                   %# The number of bits to get for each value
nValues = numel(a);          %# The number of values in a
c = zeros(1,nValues*nBits);  %# Initialize c to an array of zeroes
for iBit = 1:nBits           %# Loop over the bits
  c(iBit:nBits:end) = bitget(a,nBits-iBit+1);  %# Get the bit values
end

Результатом c будет массив нулей и единиц. Если вы хотите превратить это в символьную строку, вы можете использовать функцию CHAR следующим образом:

c = char(c+48);
3 голосов
/ 12 ноября 2010

Да, используйте dec2bin с последующим объединением строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...