00001 #ifndef vnl_real_eigensystem_h_ 00002 #define vnl_real_eigensystem_h_ 00003 00004 //: 00005 // \file 00006 // \brief Extract eigensystem of unsymmetric matrix M, using EISPACK 00007 // \author Andrew W. Fitzgibbon, Oxford RRG, 23 Jan 97 00008 // 00009 // Modifications 00010 // dac (Manchester) 28/03/2001: tidied up documentation 00011 // 00012 00013 #include <vcl_complex.h> 00014 #include <vnl/vnl_matrix.h> 00015 #include <vnl/vnl_diag_matrix.h> 00016 00017 //: Extract eigensystem of unsymmetric matrix M, using the EISPACK routine 00018 // vnl_eigensystem is a full-bore real eigensystem. If your matrix 00019 // is symmetric, it is *much* better to use vnl_symmetric_eigensystem. 00020 00021 class vnl_real_eigensystem { 00022 public: 00023 vnl_real_eigensystem(const vnl_matrix<double>& M); 00024 00025 public: 00026 vnl_matrix<double> Vreal; 00027 00028 //: Output matrix of eigenvectors, which will in general be complex. 00029 vnl_matrix<vcl_complex<double> > V; 00030 00031 //: Output diagonal matrix of eigenvalues. 00032 vnl_diag_matrix<vcl_complex<double> > D; 00033 }; 00034 00035 #endif // vnl_real_eigensystem_h_