Элемент умного умножения матрицы и вектора? - PullRequest
19 голосов
/ 22 октября 2011

Есть ли в октаве встроенная функция для умножения каждого столбца m X n поэлементно на вектор столбца размером m, который более эффективен, чем использование цикла?

Ответы [ 2 ]

37 голосов
/ 22 октября 2011

Вы можете реплицировать вектор столько раз, сколько вам нужно, чтобы превратить его в матрицу m x n, а затем использовать встроенный оператор поэлементного умножения .*:

>> A = [1 2; 3 4; 5 6];
>> B = [1; 2; 3];

>> A .* repmat(B, 1, columns(A))
ans = 

    1    2
    6    8
   15   18
3 голосов
/ 05 ноября 2015

Я не пробовал ответ Анны Лир, но, как прокомментировал этот ответ nobar, Октав сейчас вещает. Так что вам просто нужно сделать A. * B. Вы получите предупреждение о том, что применяется автоматическая трансляция продукта

>> A.*B
warning: product: automatic broadcasting operation applied
ans =

 1    2
 6    8
15   18
...