在MATLAB中乘以两个三维矩阵

时间:2015-04-14 23:27:23

标签: matlab matrix multidimensional-array

我有两个矩阵AB,分别为维度[a b c][b a c]。我想做以下事情:

C = zeros([a a c]);
for i = 1 : c
    C(:,:,i) = A(:,:,i) * B(:,:,i);
end

没有使用任何for循环。换句话说,通过一些内置函数,或者某种矢量操作。

这可能吗?

1 个答案:

答案 0 :(得分:2)

我认为你的计算应该已经相当快了。但是,您可以在文件交换中尝试{em> James Tursa 的mtimesx submission,其描述如下:

  

MTIMESX是一种快速通用矩阵和标量乘法程序,具有以下特征:

     
      
  • 直接支持多维(nD,n> 2)数组
  •   
  • [...]
  •   
  • 在大多数情况下可以达到或超过MATLAB的速度
  •   

如果您正在处理大量小尺寸的矩阵,您可能会发现矢量化不同的尺寸也可以加快速度:

C = zeros(a,a,c);
for j = 1:size(A,2)
    C = C + bsxfun(@times, A(:,j,:), B(j,:,:));
end