【发布时间】:2015-01-12 10:51:27
【问题描述】:
我无法理解为什么使用 c++ 中的 Eigen 库将 10x3 矩阵与 3x10 矩阵相乘而得到 10x10 矩阵。
按照http://eigen.tuxfamily.org/dox-devel/group__TutorialMatrixArithmetic.html 的文档,我想出了
const int NUM_OBSERVATIONS = 10;
const int NUM_DIMENSIONS = 3;
MatrixXf localspace(NUM_DIMENSIONS, NUM_OBSERVATIONS);
MatrixXf rotatedlocalspace(NUM_OBSERVATIONS, NUM_DIMENSIONS);
MatrixXf covariance(NUM_DIMENSIONS, NUM_DIMENSIONS);
covariance = (rotatedlocalspace * localspace) / (NUM_OBSERVATIONS - 1);
cout << covariance << endl;
当我试图为每个维度获取一个 3x3 协方差矩阵时,输出给出一个 10x10 矩阵(这些是平均居中的 XYZ 点)。计算协方差时,“localspace”和“rotatedlocalspace”都用浮点值填充。
如何获得正确的协方差矩阵?
【问题讨论】:
-
因为将 [MxK] 矩阵乘以 [KxN] 矩阵会得到 [MxN] 矩阵。
标签: c++ matrix matrix-multiplication eigen