2017-01-23 3 views
1

У меня есть один массив A размером 1x64 и другой массив B размером 64x1806. Я хочу добавить A в B таким образом, чтобы 1-й элемент A был добавлен в 1-й ряд B и так далее до 64 элементов, добавленных в 64-й ряд B. Как я могу это сделать в matlab. Например,Строка Мудрый Добавление одного массива в другой

A= (4 5 6 7) 
B= (3 4 5; 
    4 5 6; 
    4 5 6; 
    3 4 5) 
c=(4+3) (4+4) (4+5); 
    (5+4) (5+5) (5+6); 
    (6+4) (6+5) (6+6);... 

ответ

0

Если я правильно понимаю, что вы можете использовать repmat сначала «повторить» а для каждого столбца, и если она имеет такой же размер, как и B, просто добавьте B к нему:

C = repmat(A', 1, size(B, 2)) + B 
+0

, если у меня есть 3 матрицы 'A = [1; 2; 3] B = [2 3 4; 5 6 7; 9 0] C = [3 4 5 6; 9 8 7 6; 5 4 2 1] 'и я хочу добавить их таким образом. D =' [(1 + 2 + 3) (1 + 2 + 4) (1 + 2 + 5) (1 + 2 + 6) (1 (1 + 3 + 4) (1 + 3 + 5) (1 + 3 + 6) (1 + 4 + 3) (1 + 4 + 4) (1 + 4 + 5) (1+ 4 + 6); (2 + 5 + 9) (2 + 5 + 8) (2 + 5 + 7) (2 + 5 + 6) (2 + 6 + 9) (2 + 6 + 8) (2 + 6 + 7) (2 + 6 + 6) (2 + 7 + 9) (2 + 7 + 8) (2 + 7 + 7) (2 + 7 + 6); (3 + 8 + 5) (3 + 8 + 4) (3 + 8 + 2) (3 + 8 + 1) (3 + 9 + 5) (3 + 9 + 4) (3 + 9 + 2) (3 + 9 + 1) (3 + 0 + 5) (3 + 0 + 4) (3 + 0 + 2) (3 + 0 + 1)] ', тогда как это может быть расширено? –

5

использование bsxfun для add A транспонированный и B элементный с однотонным расширением:

A = [4 5 6 7] 
B = [3 4 5; 4 5 6; 4 5 6; 3 4 5]; 
C = bsxfun(@plus, A.', B); 

Или, с Matlab R2016b, вы можете использовать + напрямую, благодаря implicit singleton expansion:

C = A.' + B; 
Смежные вопросы