大家好:),
我试图使用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/