MATLABで多次元配列の要素ごとの行列積
Pythonのnumpy.einsumで実現できる,次のような要素ごとの行列積操作をMATLABで実現したいです.
import numpy as np
a = np.array([[[1,2],[3,4]],[[1,3],[-3,1]]])
b = np.array([[2,-1],[1,1]])
c = np.einsum('ijk,kl->ijl',a,b)
d1 = a[0]@b
d2 = a[1]@b
print(c)
print(d1)
print(d2)
すなわち,3次元配列A (サイズ:MxMxN),2次元配列B(サイズ:MxM)に対し,
各n=1,...,Nに対して C[:,:,n] = A[:,:,n] * B を満たす3次元配列CをMATLABで効率よく計算したいです.
現状はnに関してループを回している状況なので,より効率のよい方法があればお教えください.
「GithubやMathWorksのFile ExchangeにあるeinsumのMATLAB実装を用いる」という方法以外でよろしくお願いいたします.