可能重复:
MATLAB: How to vector-multiply two arrays of matrices?张量收缩在Matlab
有没有办法在Matlab合同高维张量?
例如,假设我有两个3维阵列,与这些尺寸:
size(A) == [M,N,P]
size(B) == [N,Q,P]
欲收缩在第二和第一指数A
和B
到,分别。换句话说,我想考虑A
是一个大小为[M,N]
和B
的矩阵的阵列,它是等长阵列的[N,Q]
矩阵;我想要将这些数组逐个(逐个矩阵)地乘以得到大小为[M,Q,P]
的东西。
我可以通过一个for循环做到这一点:
assert(size(A,2) == size(B,1));
assert(size(A,3) == size(B,3));
M = size(A,1);
P = size(A,3);
Q = size(B,2);
C = zeros(M, Q, P);
for ii = 1:size(A,3)
C(:,:,ii) = A(:,:,ii) * B(:,:,ii);
end
有没有办法做到这一点,避免for循环? (也许可以和尺寸的任意数量的阵列工作?)
可能复制[MATLAB:如何向量乘两个矩阵数组?](http://stackoverflow.com/questions/6580656/matlab-how-to-vector-multiply-two-arrays-of-matrices)。也相关:[用2D矩阵乘以3D矩阵](http://stackoverflow.com/questions/1745299/multiply-a-3d-matrix-with-a-2d-matrix) – Amro