Таблица обратного просмотра - PullRequest
1 голос
/ 18 февраля 2010

Это дополнительный вопрос из предыдущего ТАКого вопроса . Теперь у меня есть бит, который я разложил на 8 бит. Я использовал решение Amro, чтобы распространить бит до 8 бит. Теперь я хочу обратный способ преобразовать 8 бит обратно в один бит.

Мне удалось реализовать только обратное использование цикла for, которое занимает много времени в приложении.

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

1 Ответ

2 голосов
/ 18 февраля 2010

Поскольку вы используете решение, которое я предложил в прошлый раз, допустим, у вас есть матрица N-by-8 из этих «битов», где каждая строка представляет одно 8-битное двоичное число. Чтобы преобразовать в десятичную форму векторизованным способом, достаточно просто:

» M = randi([0 1], [5 8])      %# 5 random 8-bit numbers
M =
     1     0     1     0     1     0     1     1
     0     1     1     0     1     1     1     0
     1     1     0     1     1     0     1     1
     1     0     0     0     0     1     1     0
     1     0     0     1     0     1     1     0
» d = bin2dec( num2str(M) )
d =
   171
   110
   219
   134
   150

Альтернативное решение:

d = sum( bsxfun(@times, M, power(2,7:-1:0)), 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...