我有两个矩阵,a是2000乘20000,b也是2000乘20000.我想获得a'*b
的对角元素。我使用diag(a'*b)
但它非常慢(大约20秒),因为计算非对角线元素需要时间。我想知道是否有更快的方法来做到这一点。
我注意到人们会像sum((T*H).*T',2)
这样做,这里是link。但要求T是方阵。在我的情况下,非方阵怎么样?
由于
答案 0 :(得分: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