大家好:),

我试图使用Eigen3的不受支持的功能来获取矩阵(MatrixBase::sqrt())的每个元素的平方根。但是,每次使用上述功能时,Visual Studio都会给我以下错误:Use of undefined type 'Eigen::MatrixSquareRootReturnValue<Derived>'

这就是我在做什么:

Eigen::MatrixXd ScalesM(3,3);
ScalesM << 1, 2, 3, 4, 5, 6, 7, 8, 9;
ScalesM = ScalesM.sqrt();


任何帮助将不胜感激。祝你有美好的一天!

最佳答案

您正在查看错误的文档。矩阵的平方根与矩阵的每个元素的平方根不同。如果要进行逐元素运算,则应使用Eigen Array代替本征矩阵。您始终可以使用.array()函数将矩阵转换为数组,并使用.matrix()将矩阵转换为矩阵。因此,针对您的用例的正确文档是here

您的代码应为

ScalesM.array().sqrt();


或者按照评论中的@Henri Menke的建议,您可以使用

ScalesM.cwiseSqrt();

关于c++ - MatrixBase::sqrt()在Eigen3中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51681324/

10-16 20:46