You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19 lines
599 B

  1. #include <iostream>
  2. #include <Eigen/SVD>
  3. using namespace StormEigen;
  4. using namespace std;
  5. float inv_cond(const Ref<const MatrixXf>& a)
  6. {
  7. const VectorXf sing_vals = a.jacobiSvd().singularValues();
  8. return sing_vals(sing_vals.size()-1) / sing_vals(0);
  9. }
  10. int main()
  11. {
  12. Matrix4f m = Matrix4f::Random();
  13. cout << "matrix m:" << endl << m << endl << endl;
  14. cout << "inv_cond(m): " << inv_cond(m) << endl;
  15. cout << "inv_cond(m(1:3,1:3)): " << inv_cond(m.topLeftCorner(3,3)) << endl;
  16. cout << "inv_cond(m+I): " << inv_cond(m+Matrix4f::Identity()) << endl;
  17. }