在MATLAB中矢量化组合矩阵和逐元素乘法

时间:2012-08-02 15:18:40

标签: matlab

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

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

1 个答案:

答案 0 :(得分:1)

尝试

 u=squeeze(sum(bsxfun(@times,permute(M, [2 3 1]), v)))';