gpt4 book ai didi

r - 如何只计算R中矩阵乘积的对角线

转载 作者:行者123 更新时间:2023-12-04 10:15:01 33 4
gpt4 key购买 nike

我有两个矩阵 AB ,那么最快的方式是什么 只是 计算 diag(A%*%B) ,即 A 第 i 行的内积和B的第i列, 和 其他项的内积无关 .

补充:AB分别有大的行号和列号。

最佳答案

这可以在没有完整矩阵乘法的情况下完成,只使用矩阵元素的乘法。

我们需要将 A 的行相乘通过 B 的匹配列并对元素求和。 A的行是 t(A) 的列,我们逐元素乘以 B并对列求和。

换句话说:colSums(t(A) * B)
测试我们首先创建示例数据的代码:

n = 5
m = 10000;

A = matrix(runif(n*m), n, m);
B = matrix(runif(n*m), m, n);

您的代码:
diag(A %*% B)
# [1] 2492.198 2474.869 2459.881 2509.018 2477.591

无需矩阵乘法的直接计算:
colSums(t(A) * B)
# [1] 2492.198 2474.869 2459.881 2509.018 2477.591

结果是一样的。

关于r - 如何只计算R中矩阵乘积的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42569698/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com