Я отчаянно пытаюсь избежать цикла for
в Matlab, но не могу понять, как это сделать. Вот ситуация:
У меня есть две mxn
матрицы A
и B
и два вектора v
и w
длины d
. Я хочу произвести внешнее умножение A
и v
, чтобы получить матрицу mxnxd
, где запись (i, j, k)
A_ (i, j) * v_k
, и аналогично для B
и w
.
После этого я хочу добавить полученный mxnxd
, а затем взять среднее
по последнему измерению, чтобы получить матрицу mxn
.
Я почти уверен, что смогу справиться со второй частью, но с первой часть меня полностью застряла. Я безуспешно пытался использовать bsxfun
. Кто-нибудь знает эффективный способ сделать это? Большое спасибо!
РЕДАКТИРОВАТЬ: Эта версия появилась после трех замечательных ответов ниже. У gnovice есть лучший ответ на вопрос, который я задал, без сомнения. Однако вопрос, который я хотел задать, включает в себя возведение каждой записи в квадрат перед вычислением среднего. Я забыл упомянуть эту часть изначально. Учитывая это раздражение, оба других ответа работают хорошо, но умный трюк с алгеброй перед кодированием на этот раз не помогает. Всем спасибо за помощь!