SRIFilter.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
47 //------------------------------------------------------------------------------------
48 #ifndef CLASS_SQUAREROOT_INFORMATION_FILTER_INCLUDE
49 #define CLASS_SQUAREROOT_INFORMATION_FILTER_INCLUDE
50 
51 //------------------------------------------------------------------------------------
52 // system
53 #include <ostream>
54 // GNSSTk
55 #include "Matrix.hpp"
56 #include "Vector.hpp"
57 // geomatics
58 #include "SRI.hpp"
59 #include "SparseMatrix.hpp"
60 
61 namespace gnsstk
62 {
93  class SRIFilter : public SRI
94  {
95  public:
97  SRIFilter();
98 
103  SRIFilter(const unsigned int N);
104 
110  SRIFilter(const Namelist& NL);
111 
119  SRIFilter(const Matrix<double>& R, const Vector<double>& Z,
120  const Namelist& NL);
121 
126  SRIFilter(const SRIFilter& right) { *this = right; }
127 
132  SRIFilter& operator=(const SRIFilter& right);
133 
146  const Matrix<double>& CM = SRINullMatrix);
147 
161 
250  void timeUpdate(Matrix<double>& PhiInv, Matrix<double>& Rw,
252  Matrix<double>& Rwx);
253 
319  Matrix<double>& Rwx);
320 
377  Matrix<double>& Phinv, Matrix<double>& Rw,
379  Matrix<double>& Rwx);
380 
384  static void
386  Matrix<double>& Phinv, Matrix<double>& Rw,
388  Matrix<double>& Rwx, Vector<double>& U);
389 
394  void zeroAll();
395 
402  void reset(const int N = 0);
403 
404  private:
408  template <class T>
409  static void SrifTU(Matrix<T>& R, Vector<T>& Z, Matrix<T>& Phi,
410  Matrix<T>& Rw, Matrix<T>& G, Vector<T>& Zw,
411  Matrix<T>& Rwx);
412 
417  template <class T>
418  static void SrifSU(Matrix<T>& R, Vector<T>& Z, Matrix<T>& Phi,
419  Matrix<T>& Rw, Matrix<T>& G, Vector<T>& Zw,
420  Matrix<T>& Rwx);
421 
426  template <class T>
427  static void SrifSU_DM(Matrix<T>& P, Vector<T>& X, Matrix<T>& Phinv,
428  Matrix<T>& Rw, Matrix<T>& G, Vector<T>& Zw,
429  Matrix<T>& Rwx);
430 
432  void defaults()
433  {
434  // valid = false;
435  }
436 
437  // private member data - inherits from SRI
438  // inherit SRI Information matrix, an upper triangular (square) matrix
439  // Matrix<double> R;
440  // inherit SRI state vector, of length equal to dimension (row and col) of
441  // R.
442  // Vector<double> Z;
443  // inherit SRI Namelist parallel to R and Z, labelling elements of state
444  // vector.
445  // Namelist names;
446 
447  // --------- private member data ------------
448  // TD how to implement valid?
449  // indicates if filter is valid - set false when inversion finds
450  // singularity.
451  // bool valid;
452 
453  }; // end class SRIFilter
454 
455 } // end namespace gnsstk
456 
457 //------------------------------------------------------------------------------------
458 #endif
gnsstk::SRINullMatrix
const Matrix< double > SRINullMatrix
constant (empty) Matrix used for default input arguments
Definition: SRI.cpp:69
gnsstk::SRIFilter::SrifSU_DM
static void SrifSU_DM(Matrix< T > &P, Vector< T > &X, Matrix< T > &Phinv, Matrix< T > &Rw, Matrix< T > &G, Vector< T > &Zw, Matrix< T > &Rwx)
Definition: SRIFilter.cpp:914
gnsstk::SRIFilter::SRIFilter
SRIFilter()
empty constructor
Definition: SRIFilter.cpp:62
gnsstk::SRIFilter::SRIFilter
SRIFilter(const SRIFilter &right)
Definition: SRIFilter.hpp:126
gnsstk::SRIFilter::reset
void reset(const int N=0)
Definition: SRIFilter.cpp:290
gnsstk::SRI
Definition: SRI.hpp:175
gnsstk::SRIFilter::measurementUpdate
void measurementUpdate(const Matrix< double > &H, Vector< double > &D, const Matrix< double > &CM=SRINullMatrix)
Definition: SRIFilter.cpp:123
SRI.hpp
gnsstk::SRI::R
Matrix< double > R
Information matrix, an upper triangular (square) matrix.
Definition: SRI.hpp:601
gnsstk::SRIFilter::operator=
SRIFilter & operator=(const SRIFilter &right)
Definition: SRIFilter.cpp:111
gnsstk::SRIFilter
Definition: SRIFilter.hpp:93
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::SRIFilter::timeUpdate
void timeUpdate(Matrix< double > &PhiInv, Matrix< double > &Rw, Matrix< double > &G, Vector< double > &Zw, Matrix< double > &Rwx)
Definition: SRIFilter.cpp:235
gnsstk::SRI::Z
Vector< double > Z
SRI state vector, of length equal to the dimension (row and col) of R.
Definition: SRI.hpp:604
gnsstk::SRINullSparseMatrix
const SparseMatrix< double > SRINullSparseMatrix
constant (empty) SparseMatrix used for default input arguments
Definition: SRI.cpp:70
gnsstk::Matrix< double >
gnsstk::SRIFilter::smootherUpdate
void smootherUpdate(Matrix< double > &Phi, Matrix< double > &Rw, Matrix< double > &G, Vector< double > &Zw, Matrix< double > &Rwx)
Definition: SRIFilter.cpp:251
gnsstk::SRIFilter::DMsmootherUpdateWithControl
static void DMsmootherUpdateWithControl(Matrix< double > &P, Vector< double > &X, Matrix< double > &Phinv, Matrix< double > &Rw, Matrix< double > &G, Vector< double > &Zw, Matrix< double > &Rwx, Vector< double > &U)
gnsstk::SRIFilter::SrifTU
static void SrifTU(Matrix< T > &R, Vector< T > &Z, Matrix< T > &Phi, Matrix< T > &Rw, Matrix< T > &G, Vector< T > &Zw, Matrix< T > &Rwx)
Definition: SRIFilter.cpp:398
gnsstk::SRIFilter::DMsmootherUpdate
static void DMsmootherUpdate(Matrix< double > &P, Vector< double > &X, Matrix< double > &Phinv, Matrix< double > &Rw, Matrix< double > &G, Vector< double > &Zw, Matrix< double > &Rwx)
Definition: SRIFilter.cpp:266
gnsstk::Vector< double >
gnsstk::SRIFilter::defaults
void defaults()
initialization used by constructors
Definition: SRIFilter.hpp:432
gnsstk::SRIFilter::zeroAll
void zeroAll()
Definition: SRIFilter.cpp:283
gnsstk::Namelist
Definition: Namelist.hpp:287
Matrix.hpp
SparseMatrix.hpp
gnsstk::SRIFilter::SrifSU
static void SrifSU(Matrix< T > &R, Vector< T > &Z, Matrix< T > &Phi, Matrix< T > &Rw, Matrix< T > &G, Vector< T > &Zw, Matrix< T > &Rwx)
Definition: SRIFilter.cpp:649
gnsstk::SparseMatrix
Definition: SparseMatrix.hpp:53
Vector.hpp


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:41