A1
и A2
- это два массива целых чисел с одинаковыми размерами 6000x2000
.Преобразование двух матриц в одну матрицу с использованием двоичных чисел
Я хочу найти третью матрицу B
, выполнив следующие действия:
for i=1:1:6000
for j=1:2000
a1 = fliplr(dec2binvec(A1(i,j),14)); % Convert A1(i,j) to a binary vector
a2 = fliplr(dec2binvec(A2(i,j),32)); % Convert A2(i,j) to a binary vector
b = [a1 a2];
B(i,j) = sum(b.*2.^(numel(b)-1:-1:0)); % Convert b to decimal
end
end
моя проблема времени вычисления, чтобы найти B.
Есть ли способ избежать циклов, чтобы сократить время вычислений?
Пример:
A1 = [2 3 A2 = [7 6
4 5] 2 9]
A1(1,1) = 2
и A2(1,1) = 7
a1 = [0 0 0 1 0]
(например, 5 бит) a2 = [0 0 0 1 1 1]
(например, 6 бит)
b = [a1 a2] = [0 0 0 1 0 0 0 0 1 1 1]
B1(1,1) = sum(b.*2.^(numel(b)-1:-1:0)) = 135
Пожалуйста, пост небольшой числовой пример (скажем, с матрицами 2х2), уточнить порядок байт и т.д. –
'dec2binvec' возвращает младший бит первый, но 'b. * 2.^(numel (b) -1: -1: 0)' сначала использует его как старший старший бит. Вы подтвердили, что действительно получаете то, что хотите с помощью этого кода? – Daniel
@ LuisMendo: Я добавил пример. – bzak