cv::eigen(matA1, matD1, matV1);
cv::eigen
函数主要用于对矩阵进行特征值分解。特征值分解是线性代数中非常重要的概念,它可以将一个矩阵分解为特征向量和特征值。
- matA1: 需要进行特征值分解的输入矩阵。
- matD1: 输出的特征值矩阵,对角线上的元素为特征值。
- matV1: 输出的特征向量矩阵,每一列是一个特征向量
当我们调用 cv::eigen(matA1, matD1, matV1)
时,OpenCV 会对矩阵 matA1
进行特征值分解。具体来说,它会找到一组向量 (特征向量) 和一组标量 (特征值),使得:
matA1 * matV1 = matV1 * matD1
matV1
的列向量是matA1
的特征向量。matD1
是一个对角矩阵,对角线上的元素是matA1
的特征值
cv::eigen 函数计算得到的特征值矩阵 matD1 中,特征值通常是按照 从大到小 的顺序排列在对角线上
为什么是降序排列?
- 重要性排序: 特征值反映了矩阵在对应特征向量方向上的伸缩比例。一般来说,较大的特征值对应着数据变化较大的方向,即信息量较大的方向。因此,将特征值降序排列可以方便我们提取主要信息。
- PCA降维: 在主成分分析(PCA)中,我们通常选取前几个最大的特征值对应的特征向量来进行降维,这些特征向量代表了数据的主要变动方向。
---------------------------------------------------------------------------------------------------------------------------------