Hi all,
Gael, we've been using the fast eigen decomposition suggested by you in an
e-mail back in 09/02/10 (regarding SelfAdjointEigenSolver<Matrix3f> -
http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/08/msg00283.html)
without any major issues for the past few months.
We've recently hit a problem, and I was wondering whether there is a fix for
it that doesn't involve switching to another SVD/eigendecomposition method
in Eigen, as the implementation that we're using (see attached source) is
still blazing fast.
Here's the snippet of code that exhibits the problem (not that it's a c&p so
please ignore the style/format):
Eigen3::Matrix3f covariance_matrix_f;
covariance_matrix_f<< 5.64909, 5.64909, 0.0860435, 5.64909, 5.64909,
0.0860435, 0.0860435, 0.0860435, 2.92133;
Eigen3::SelfAdjointEigenSolver<Eigen3::Matrix3f> ei_symm
(covariance_matrix_f);
Eigen3::Vector3f eigen_values = ei_symm.eigenvalues ();
Eigen3::Matrix3f eigen_vectors = ei_symm.eigenvectors ();
cerr<< eigen_vectors<< endl;
cerr<< eigen_values<< endl;
cerr<< "Normal: "<< eigen_vectors (0, 0)<< ", "<< eigen_vectors (1, 0)
<< ", "<< eigen_vectors (2, 0)<< endl;
Eigen3::Vector3f eigen_val;
Eigen3::Matrix3f eigen_vec;
eigen33 (covariance_matrix_f, eigen_vec, eigen_val);
cerr<< eigen_vec<< endl;
cerr<< eigen_val<< endl;
cerr<< "Normal: "<< eigen_vec (0, 0)<< ", "<< eigen_vec (1, 0)<< ","
<< eigen_vec (2, 0)<< endl;
----
The output is:
0.707107 -0.0102705 0.707032
-0.707107 -0.0102656 0.707032
3.48268e-06 0.999894 0.0145212
3.41638e-08
2.91956
11.2999
Normal: 0.707107, -0.707107, 3.48268e-06
-0.00781202 0.0102683 0.707032
-0.00781202 0.0102683 0.707032
0.999939 -0.999895 0.0145207
-1.01014e-06
2.91956
11.2999
Normal: -0.00781202, -0.00781202, 0.999939
---
Thanks in advance.
Cheers,
Radu.
--
http://pointclouds.org