00001 00013 #ifndef EKF_TEMPLATE_H 00014 #define EKF_TEMPLATE_H 00015 00016 #include "kalman.h" 00017 00018 namespace bdm { 00019 00021 class EKFful_unQR : public EKFfull { 00022 public: 00023 void condition ( const vec &QR0 ) { 00024 Q = diag ( QR0 ( 0, dimx - 1 ) ); 00025 R = diag ( QR0 ( dimx, dimx + dimy - 1 ) ); 00026 }; 00027 }; 00028 00030 class EKFCh_dQ : public EKFCh { 00031 public: 00032 void condition ( const vec &Q0 ) { 00033 Q.setD ( Q0, 0 ); 00034 //from EKF 00035 preA.set_submatrix ( dimy + dimx, dimy, Q._Ch() ); 00036 }; 00037 }; 00038 00040 class EKFCh_chQ : public EKFCh { 00041 public: 00042 void condition ( const vec &chQ0 ) { 00043 Q.setCh ( chQ0 ); 00044 //from EKF 00045 preA.set_submatrix ( dimy + dimx, dimy, Q._Ch() ); 00046 }; 00047 }; 00048 00050 class EKFCh_cond : public EKFCh { 00051 public: 00052 void condition ( const vec &val ) { 00053 pfxu->condition ( val ); 00054 }; 00055 }; 00056 00057 } 00058 #endif //EKF_TEMP_H