1

我正在寻找一种方法来矢量化组合矩阵乘法和逐元素加法。

假设我有一个矩阵函数 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 很大。

4

1 回答 1

1

尝试

 u=squeeze(sum(bsxfun(@times,permute(M, [2 3 1]), v)))';
于 2012-08-02T17:16:25.083 回答