【问题标题】:covariance matrix gsl协方差矩阵gsl
【发布时间】:2012-12-09 07:47:50
【问题描述】:

我正在尝试计算两个向量 a 和 b 之间的马氏距离。最终,我将使用它作为统计算法中的距离度量。我正在使用 gsl 来实现它们。马氏距离的公式是 sqrt((a-b)'c^-1(a-b)),其中 c 是协方差矩阵。根据this gsl 文档,它接收两个数据集并返回一个协方差值。我不确定如何使用它计算协方差矩阵。 任何帮助表示赞赏。

谢谢。

【问题讨论】:

    标签: c statistics gsl


    【解决方案1】:

    我认为您首先需要了解协方差矩阵的计算,其次是示例代码以帮助您入门

    for (i = 0; i < A->size1; i++) {
            for (j = i; j < A->size2; j++) {
              a = gsl_matrix_column (A, i);
              b = gsl_matrix_column (A, j);
              double cov = gsl_stats_covariance(a.vector.data, a.vector.stride,b.vector.data, b.vector.stride, a.vector.size);
              gsl_matrix_set (C, i, j, cov);
            }
          }
    

    【讨论】:

    • 您好,感谢您的回复。在这段代码中,sn-p 是 A 的数据矩阵吗?因为就我而言,调用函数时我所拥有的只是两个大小相同的向量。所以,我仍然不确定如何获得两个向量之间的协方差矩阵。因为如果我在 a 和 b 之间调用 gsl_stats_covariance,我得到的只是一个值。
    • yup A 是一个矩阵,ab 是矩阵的列 A 得到的矩阵 C 是你的协方差矩阵.....
    • 不应该是A-&gt;size2两次吗? size1 是行数,您不会遍历行。我也没有改变,那你为什么不在外循环中分配一个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2017-08-27
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多