У меня есть матрица mxn
, M
и вектор, b
(длина c
).Есть ли способ умножения каждого элемента M
на каждый элемент вектора, чтобы получить результат mxnxc
, т. Е. result(1, 1, :)
is M(1, 1) .* b
?
Для векторов использование поэлементных операторов работает,Например, если m = [a; b]
и n = [c d]
, то a .* b
дает
a*c a*d
b*c b*d
, но для матриц это будет выполнять поэлементную или столбцовую операцию для матрицы в зависимости от того, n
- вектор столбца или строки.Например, если m = [ a b; c d ]
и n = [ e f ]
, то m .* n
дает
a*e b*f
c*e d*f
, в то время как результат, который я ищу, будет result(:, :, 1) =
a*e b*e
c*e d*e
и result(:, :, 2) =
a*f b*f
c*f d*f
Я знаю, что это может быть достигнуто с помощью цикла,
result = zeros(m, n, c);
for i = 1:b
result(:, :, i) = M .* b(i);
end
, но мне интересно, есть ли более простой, то есть более MATLAB/Octave
(обычно более читаемый и производительный)Кстати, делать это.