本文整理汇总了C++中eigen::MatrixXd::hasNaN方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixXd::hasNaN方法的具体用法?C++ MatrixXd::hasNaN怎么用?C++ MatrixXd::hasNaN使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixXd
的用法示例。
在下文中一共展示了MatrixXd::hasNaN方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: refMat
std::pair<Eigen::MatrixXd, std::set<std::pair<int, int>>> UpdateGuessICP(
std::vector<Eigen::Vector2d, Eigen::aligned_allocator<Eigen::Vector2d>> const& reference,
std::vector<Eigen::Vector2d, Eigen::aligned_allocator<Eigen::Vector2d>> const& toSolve,
Eigen::MatrixXd guess)
{
int count = std::min(reference.size(), toSolve.size()) / 2;
std::set<int> skipRef;
std::set<int> skipSolve;
Eigen::MatrixXd refMat(2, count);
Eigen::MatrixXd solveMat(3, count);
std::set<std::pair<int, int>> matches;
for (int i = 0; i < count; i++)
{
auto closestPair = ClosestPoint(reference, toSolve, guess, skipRef, skipSolve);
if (closestPair.first == -1 || closestPair.second == -1)
{
throw std::runtime_error("Could not find enough matching star pairs");
}
skipRef.insert(closestPair.first);
skipSolve.insert(closestPair.second);
matches.insert(closestPair);
refMat.col(i) = reference[closestPair.first];
auto sVec = toSolve[closestPair.second];
solveMat.col(i) = Eigen::Vector3d(sVec[0], sVec[1], 1);
}
Eigen::MatrixXd mul = refMat * solveMat.transpose() * (solveMat * solveMat.transpose()).inverse();
if (mul.hasNaN())
throw std::runtime_error("Solved transformation had NaN");
return make_pair(mul, matches);
}