繁体   English   中英

Matlab有效地获取矩阵乘积的对角线值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM