2015-10-17 163 views
1

我有兩個矩陣,a是2000乘20000,b也是2000乘20000。我想得到a'*b的對角元素。我用diag(a'*b),但它非常慢(約20秒),因爲計算非對角元素需要時間。我想知道是否有更快的方法來做到這一點。Matlab有效取矩陣積的對角線值

我注意到人們做了類似sum((T*H).*T',2),這裏是link。但是要求T是方陣。在我的情況下,非方陣如何?

感謝

+0

完成矩陣用零方? – percusse

回答

1

對角線的a'*b只是

result = sum(a'.*b.',2); 

示例(非方陣):

>> a = rand(4,5); 
>> b = rand(4,5); 
>> result = sum(a'.*b.',2) 
result = 
    1.6102 
    0.2805 
    1.5354 
    0.3966 
    1.1896 

>> diag(a'*b) 
ans = 
    1.6102 
    0.2805 
    1.5354 
    0.3966 
    1.1896