gpt4 book ai didi

c++ - Eigen c++ 中的乘法矩阵给出了错误的维度

转载 作者:行者123 更新时间:2023-11-28 06:34:40 25 4
gpt4 key购买 nike

我无法理解为什么使用 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"在计算协方差时都用浮点值填充。

如何获得正确的协方差矩阵?

最佳答案

Eigen 是正确的,因为它再现了基础数学:如果 A 是维数为 n x m 的矩阵,而 B 的维数为 m x k ,则 A*B 的维度为 n x k

应用于您的问题,如果您的矩阵 rotatedlocalspace 的维度为 10 x 3 并且 localspace 的维度为 3 x 10,则 rotatedlocalspace*localspace 有维度

(10 x 3) * (3 x 10) ->  10 x 10.

您进一步应用的标量除法不会改变维度。

如果您期望不同的维度,请尝试交换矩阵乘积中的因子。您将获得一个 3x3 矩阵。

关于c++ - Eigen c++ 中的乘法矩阵给出了错误的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940290/

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