检查是否计算了特征分解
我如何检查Compute
以前是否已在eigen :: solver
上运行?在 eigen/src/eigenvalues/eigensolver.h 中,有一个受保护的成员变量m_isinitialized
,但我看不到它。
下面的代码显示了如何创建矩阵并计算其上的特征分解的示例。就我而言,我有一个指向eigen :: solver
的参考/指针,因此我不知道它是否已被计算出来。
- eigensolver.h docs
- /Eigen/-/blob/master/eigen/src/eigenvalues/eigensolver.h“ rel =“ nofollow noreferrer”> eigensolver.h source
#include <Eigen/Eigenvalues>
...
Eigen::Matrix<double, 3, 3> matrix;
matrix << 1,2,3,
1,2,3,
1,2,3;
Eigen::Solver<double, 3, 3> eigen_decomp;
// This next line is the compute I'm referring to
eigen_decomp.compute(matrix, /* computeEigenvectors = */ true);
std::cout << eigen_decomp.eigenValues() << "\n";
How can I check to see if compute
has previously been run on an Eigen::Solver
? There is a protected member variable m_isInitialized
in Eigen/src/EigenValues/EigenSolver.h but I don't see a getter for it.
The code below shows an example of how you would create a matrix and compute the eigen decomposition on it. In my case, I have a reference/pointer to an Eigen::Solver
so I don't know if it's been previously computed or not.
#include <Eigen/Eigenvalues>
...
Eigen::Matrix<double, 3, 3> matrix;
matrix << 1,2,3,
1,2,3,
1,2,3;
Eigen::Solver<double, 3, 3> eigen_decomp;
// This next line is the compute I'm referring to
eigen_decomp.compute(matrix, /* computeEigenvectors = */ true);
std::cout << eigen_decomp.eigenValues() << "\n";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只是为了完整性,假设您不想等待特征的功能请求,则最简单的Wokaround是
std ::可选
Just for completeness, assuming you don't want to wait for a feature request for Eigen, the easiest wokaround is
std::optional