具有不同尺寸的矩阵乘法

时间:2013-08-13 17:24:04

标签: matlab matrix multidimensional-array vectorization multiplication

我需要对以下循环进行矢量化

a=rand(m,n,k)
b=rand(n,k)
c=zeros(m,k)
for ik=1:k
  c(:,ik)=a(:,:,ik)*b(:,ik)
end

我找不到任何matlab函数来执行此操作,我认为bsxfun @multiply做了不同的事情。你可以帮忙做这件事吗?

1 个答案:

答案 0 :(得分:3)

我认为您可以使用bsxfun,如下所示(现在无法测试 - 请告诉我这是否会给您带来麻烦):

c = squeeze(sum(bsxfun(@times, a, b), 2));

bsxfun将扩展矩阵b,然后逐个元素乘法。第二维上的求和运算负责“矩阵乘法”方面。您可能需要展开{​​{1}}以获得显式单例第一维:

b