Eigen计算协方差矩阵

作者: daiw | 来源:发表于2016-04-05 10:56 被阅读1870次

今天遇到了一个求矩阵协方差的问题,记录如下
对于向量X,方差公式如下:

1.png

对于向量X, Y来说,协方差公式如下:


2.png

对于一个由n个列向量构成的矩阵,分别按列得到零均值的列向量X1,...Xn,协方差公式如下:

3.png

因此利用C++中的eigen对协方差进行求解

//输入为Eigen::MatrixXf input 输出为covMat
//求取列向量均值
Eigen::MatrixXf meanVec = input.colwise().mean();

//求取上述的零均值列向量矩阵
Eigen::MatrixXf zeroMeanMat = input;
//将列向量均值从MatrixXf 转换为行向量 RowVectorXf
Eigen::RowVectorXf meanVecRow(Eigen::RowVecXf::Map(meanVec.data(),3));
zeroMeanMat.rowwise() -= meanVecRow;

//计算协方差
Eigen::MatrixXf covMat = (zeroMeanMat.adjoint()*zeroMeanMat)/double(input.rows()-1);
其中adjoint函数为求取矩阵的共轭转置,对于实系数矩阵来说为求取矩阵的转置

相关文章

  • Eigen计算协方差矩阵

    今天遇到了一个求矩阵协方差的问题,记录如下对于向量X,方差公式如下: 对于向量X, Y来说,协方差公式如下: 对于...

  • 无监督第二节:SVD及和PCA之间的关系

    1. 特征值分解 & 奇异值分解 上面说到通过对协方差矩阵进行特征值分解(Eigen Values Decompo...

  • MSI数据之PCA

    PCA:主成分分析 首先对数据进行去中心化(矩阵X),再计算协方差矩阵(就是样本与样本[列与列]之间的协方差,就得...

  • PCA

    这是一种数据压缩的好方法首先计算均值然后计算其协方差矩阵再对协方差矩阵进行特征值分解(SVD分解的特殊情况)取特征...

  • 2018-10-29 修改model - 共用协方差矩阵

    1.协方差矩阵 协方差矩阵 Σ表示的是n个元素之间两两对应的关系,所以协方差矩阵 Σ是一个nxn的矩阵。 协方差矩...

  • 方差、协方差与归一化

    最近总是遇到协方差,不大理解,找到了相关的解释: 我所理解的协方差矩阵 协方差和协方差矩阵

  • 矩阵计算库Eigen介绍

    主页:http://eigen.tuxfamily.org/index.php?title=Main_Page

  • 为什么要PCA,不直接SVD?

    为什么? 一句话,转成协方差矩阵,是对称矩阵,特征值分解比SVD奇异值分解的计算量小的多 PCA可以通过分解协方差...

  • 2019-02-26 Eigen库使用

    项目里用了很多Eigen做矩阵运算,决定好好整理一下。 1.矩阵定义 2.矩阵初始化和基本计算 3.矩阵的分块 4...

  • 协方差矩阵的计算

    详解协方差与协方差矩阵协方差的定义 对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的...

网友评论

    本文标题:Eigen计算协方差矩阵

    本文链接:https://www.haomeiwen.com/subject/nirplttx.html