我正在寻找一种对组合矩阵乘法和逐元素加法进行矢量化的方法。
假设我有一个矩阵函数M_ {ij}(x)和一个向量函数v_j(x),其中{i,j}是矩阵索引,x是位置变量。我想执行逐元素矩阵乘法并找到u(x)= M(x).v(x)。一个简单的例子是:
imax = 2; jmax = 3; xmax = 10;
M=rand(imax,jmax,xmax);
v=rand(jmax,xmax);
u=zeros(imax,xmax);
for i=1:imax
for j=1:jmax
u(i,:) = u(i,:) + squeeze(M(i,j,:))'.*v(j,:);
end
end
是否存在加速此操作的矢量化方式?在我的问题中,我们假设imax,jmax <5,并且xmax很大。
答案 0 :(得分:1)
尝试
u=squeeze(sum(bsxfun(@times,permute(M, [2 3 1]), v)))';