gpt4 book ai didi

c# - 运行(一次)协方差计算

转载 作者:行者123 更新时间:2023-12-03 16:42:48 37 4
gpt4 key购买 nike

我得到了一组 3d 向量 (x,y,z),我想在不存储向量的情况下计算协方差矩阵。

我会用 C# 来做,但最终我会在微 Controller 上用 C 来实现它,所以我需要算法本身,而不是库。

伪代码也很棒。

最佳答案

如果您有 Matrix,则公式很简单和 Vector手头的类(class):

Vector mean;
Matrix covariance;
for (int i = 0; i < points.size(); ++i) {
Vector diff = points[i] - mean;
mean += diff / (i + 1);
covariance += diff * diff.transpose() * i / (i + 1);
}
covariance *= 1 / points.size()

我个人总是更喜欢这种风格而不是两次计算。代码很短,结果完美无缺。
MatrixVector可以有固定的尺寸,并且可以很容易地为此目的进行编码。您甚至可以将代码重写为离散浮点计算,并避免计算协方差矩阵的对称部分。

请注意,代码的倒数第二行有一个向量外积。并非所有矢量库都能正确解释它。

关于c# - 运行(一次)协方差计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809790/

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