iSAM
SparseSystem.h
Go to the documentation of this file.
00001 
00028 #pragma once
00029 
00030 #include <Eigen/Dense>
00031 
00032 #include "OrderedSparseMatrix.h"
00033 
00034 namespace isam {
00035 
00036 class SparseSystem : public OrderedSparseMatrix {
00037   Eigen::VectorXd _rhs;
00038 public:
00039   SparseSystem(int num_rows, int num_cols);
00040   SparseSystem(const SparseSystem& mat);
00041   SparseSystem(const SparseSystem& mat, int num_rows, int num_cols, int first_row = 0, int first_col = 0);
00042   SparseSystem(int num_rows, int num_cols, SparseVector_p* rows, const Eigen::VectorXd& rhs);
00043   virtual ~SparseSystem();
00044   const SparseSystem& operator= (const SparseSystem& mat);
00045 
00046   const Eigen::VectorXd& rhs() const {return _rhs;}
00047   void set_rhs(const Eigen::VectorXd& rhs) {_rhs = rhs;}
00048 
00049   // overridden functions
00050 
00056   void apply_givens(int row, int col, double* c_givens = NULL, double* s_givens = NULL);
00057 
00058   void append_new_rows(int num);
00059 
00060   // new functions
00061 
00067   virtual void add_row(const SparseVector& new_row, double new_r);
00068 
00075   virtual int add_row_givens(const SparseVector& new_row, double new_r);
00076 
00081   virtual Eigen::VectorXd solve() const;
00082 
00083 };
00084 
00085 }
 All Classes Files Functions Variables