I would like to achieve matrix product operations for each of the following elements in MATLAB that Python numpy.einsum can achieve.
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)
In other words,
for 3D array A (size: MxMxN) and 2D array B (size: MxM).
I would like to efficiently calculate the 3D array C satisfying C[:,:,n]=A[:,:,n]*B for each n=1,...,N in MATLAB.
We are currently in a loop regarding n, so please let us know if there is a more efficient way.
Other than using einsum's MATLAB implementation in File Exchange of Github and MathWorks.
If there is a 3D array A (size: MxMxN) and a 2D array B (size: MxM), wouldn't it be better to change A to M*NxM and then take the product of the normal matrix?
a=[1,2;3,4];
a(:, :, 2) = [1,3;-31];
b = [2, -1; 1,1];
M = size(a,1);
N = size(a,3);
a2 = permit(a,[1,3,2]);
A=reshape(a2,M*N,M);
% A =
% 1 2
% 3 4
% 1 3
% -3 1
C = A*b;
tC = C';
c0=reshape(tC,M,M,N);
c=permute(c0,[2,1,3])
596 GDB gets version error when attempting to debug with the Presense SDK (IDE)
567 Who developed the "avformat-59.dll" that comes with FFmpeg?
884 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
566 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
© 2024 OneMinuteCode. All rights reserved.