3

Matlab で特定の種類の 2 つの行列の要素ごとの積を取得するネイティブな方法があるかどうかを調べようとしています。

私が探している製品は、2 つの行列を取りAB言うと、そこに product を返しますC。その要素は、

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

当然、 の列A数は の行数と同じであると想定されますB

現在、次の for ループを使用しています (これsize(A,2)==size(B,1)が true であると仮定します)。まず、初期化します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 でこの種のネイティブな方法はありますか?

4

1 に答える 1

3

B の最初の 2 つの次元をそれぞれ 2 番目と 3 番目の次元に "シフト"する必要がありますpermutebsxfun@timesAB

C = bsxfun(@times,A,permute(B,[3 1 2]))
于 2014-11-09T18:20:49.593 に答える