Группировка массива битов в массив байтов - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть массив битов размером 1 на 240 000 элементов.Этот массив представляет принятую цифровую передачу.

Я хотел бы уменьшить количество элементов до 1, 30 000, где каждый элемент представляет 8 бит (или байт) из последовательности.

Также яхотел бы сделать это без использования каких-либо петель.Я играл с командой reshape, но не смог заставить ее работать.

Чтобы уточнить с помощью (16 бит вместо 240 000):

Input: [0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,]
Output: [00000001, 00000010]

Заранее благодарим вас за вашепредложения.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Я нашел преобразование его в строки через num2str и cellstr, а затем удаление всех пробелов сработало, ладно:

i=[0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,];

i=cellstr(num2str(i));
o=regexprep(i,'[^\w'']','');

Выход: o =

'00000001'
'00000010'

Обратите внимание, что формат по-прежнему является строкой, чтобы сохранить все неинформативные ведущие нули.

0 голосов
/ 25 ноября 2011

Это то, что вы можете попробовать.Выходные данные представлены в строковом формате, и я думаю, что вы хотите, чтобы все нули отображались:

clear all;
a = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0];
newsize = length(a)/8;
c = '';
b = cellstr('');
for j = 1:newsize
    c = [c int2str(a((8*(j-1)+1):(8*(j))))];
    b = [b cellstr(c)];
    c = '';
end
b = b(2:end);

Только один цикл for.

Вывод:

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