2016-07-01 33 views
0

有两个矩阵X和M和我需要获得下列矩阵dMATLAB量化和避免环路

m = 20; n = 10; 
X = rand(m,n); 
M = rand(m,m); 
M = (M + M')/2; 

D = zeros(n,n); 
for i = 1:n 
    for j = 1:n 
     D(i,j) = X(:,i)'*M*X(:,j); 
    end 
end 

当n和m是大,d的计算是很慢的。有什么方法可以加快速度?

+16

只是做'X'* M * X'? – Divakar

回答

0

答案是:

D = 0.5*X.'*(M+M')*X 

(这是由Divakar提供的方案稍作修改,使返回正确的矩阵d)