MATLAB: поэлементное умножение двух матриц по одному индексу?

Я пытаюсь выяснить, есть ли нативный способ получения определенного вида поэлементного произведения двух матриц в Matlab.

Продукт, который я ищу, занимает две матрицы, A а также B скажи и верни туда товар Cчьи элементы задаются

C(i,j,k) = A(i,j)*B(j,k)

Естественно, количество столбцов A Предполагается, будет равно количеству строк B,

Прямо сейчас я использую следующий цикл for (при условии, size(A,2)==size(B,1) правда). Сначала я инициализирую C:

C = zeros(size(A,1), size(A,2), size(B,2));

А затем я выполняю поэлементное умножение с помощью:

for i=1:size(A,2)
    C(:,i,:) = A(:,i)*B(i,:);
end

Итак, мой вопрос: есть ли в Matlab родной путь к подобным вещам?

1 ответ

Решение

Вам нужно "сдвинуть" первые два измерения B во второе и третье измерения соответственно с permuteа затем использоватьbsxfun с@times возможность работать на A и сдвинутая версия измерения B -

C = bsxfun(@times,A,permute(B,[3 1 2]))
Другие вопросы по тегам