Создание трехмерных матриц и управление ими в Matlab

Я отчаянно пытаюсь избежать цикла 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 есть лучший ответ на вопрос, который я задал, без сомнения. Однако вопрос, который я хотел задать, включает в себя возведение каждой записи в квадрат перед вычислением среднего. Я забыл упомянуть эту часть изначально. Учитывая это раздражение, оба других ответа работают хорошо, но умный трюк с алгеброй перед кодированием на этот раз не помогает. Всем спасибо за помощь!

6
задан Shai 12 June 2013 в 10:33
поделиться