[英]Matlab efficiently take diagonal values of a matrix product
我有两个矩阵,a是20000 20000,b也是200020000。我想得到a'*b
的对角元素。 我使用了diag(a'*b)
但是它非常慢(大约20秒),因为计算非对角元素需要时间。 我想知道是否有更快的方法来做到这一点。
我注意到人们做了类似sum((T*H).*T',2)
,这是链接 。 但是要求T是一个方矩阵。 在我的情况下,非平方矩阵怎么样?
谢谢
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.