Matlab将矩阵与矩阵沿第三维相乘

时间:2015-06-24 20:28:06

标签: matlab matrix matrix-multiplication

我有一个大小为m x n x 3的矩阵3x3,我有一个K矩阵for row = 1:m for col = 1:n A(row,col,:) = K*[A(row,col,1);A(row,col,2);A(row,col,3)]; end end 。现在我想做的是这样的事情:

m x n

我希望有一个没有循环的有效解决方案,因为循环非常慢,因为Visitor通常是图像的大小。

有人有个主意吗?

1 个答案:

答案 0 :(得分:4)

M = 1000;
N = 1000;
L = 3;
A = rand(M,N,L);
K = rand(L,L);
Q = reshape((K * reshape( A, [M*N, L] ).' ).', [M, N, L]);

错误检查:

Z = zeros(M,N,L);
for mm = 1 : M
  for nn = 1 : N
    Z(mm,nn,:) = K * squeeze( A(mm,nn,:) );
  end
end
max( abs( Z(:) - Q(:) ) )

ans =

      0