2012-08-02 73 views
1

我正在尋找一種方法來實現組合矩陣乘法和元素方式相加。假設我有一個矩陣函數M_ {ij}(x)和一個向量函數v_j(x),其中{i,j}是矩陣索引,x是一個位置變量。我想要執行一個元素明智的矩陣乘法並且找到u(x)= M(x).v(x)。一個簡單的例子是:向量化MATLAB中的組合矩陣和元素方式乘法

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

嘗試

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

這樣的作品,並能以10倍的速度提升放棄!謝謝! – user1571750 2012-08-03 14:55:25