Точечный продукт матрицы и вектора без петли - PullRequest
0 голосов
/ 09 октября 2018

Предположим, у нас есть матрица Mx3 и вектор 1x3.Как я могу вычислить скалярное произведение каждого столбца и вектора без использования цикла?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Используя пример данных Dev-iL:

M = rand(8,3);
V = 1:3;

точечное произведение каждой строки M с V является просто матричным произведением с транспонированным V:

M * V'

Обратите внимание, что ' возвращает транспонированное сопряжение, необходимое для точечного произведения.


Вычисление точечного произведения с столбцами из M, какИзложенное в вопросе бессмысленно, поскольку размеры не совпадают, поэтому я предполагаю, что вы имели в виду строки (как и другие ответы).

0 голосов
/ 09 октября 2018

Если я правильно понял ваш вопрос,

M = rand(8,3); V = 1:3;
P = sum( M .* V, 2 ); % or in older MATLAB versions: sum( bsxfun(@times, M, V), 2 );

Если вы имеете дело с комплексными числами, вам может потребоваться сопряжение одного из входных данных.

...