У меня есть вектор nx1 и вектор 1xn. Я хочу добавить их особым образом, например, умножение матриц эффективным способом (векторизованным):
Пример:
A=[1 2 3]'
B=[4 5 6]
A \odd_add B =
[1+4 1+5 1+6
2+4 2+5 2+6
3+4 3+5 3+6
]
С уважением
Вопрос
У меня есть вектор nx1 и вектор 1xn. Я хочу добавить их особым образом, например, умножение матриц эффективным способом (векторизованным):
Пример:
A=[1 2 3]'
B=[4 5 6]
A \odd_add B =
[1+4 1+5 1+6
2+4 2+5 2+6
3+4 3+5 3+6
]
С уважением
Вы можете использовать bsxfun:
A=[1 2 3]'
B=[4 5 6]
bsxfun(@plus, A, B)
Результат
ans =
5 6 7
6 7 8
7 8 9
Вы можете использовать функцию repmat (реплицировать матрицы):
repmat(A,1,3)+repmat(B,3,1)
Из R2016b вы можете просто сделать:
A=[1 2 3]'
B=[4 5 6]
A+B
ans =
5 6 7
6 7 8
7 8 9
Matlab молча расширит оба вектора и выполнит поэлементную сумму. Эта функция не обошлась без споров. Вы можете проверить детали здесь:
Matlab расширяет арифметику
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.