Changeset 5807 in ntrip for trunk/BNC/src/bncutils.cpp
- Timestamp:
- Aug 6, 2014, 11:09:26 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bncutils.cpp
r5753 r5807 46 46 #include <QStringList> 47 47 #include <QDateTime> 48 49 #include <newmatap.h> 48 50 49 51 #include "bncutils.h" … … 285 287 } 286 288 289 // 290 //////////////////////////////////////////////////////////////////////////// 291 double Frac (double x) { 292 return x-floor(x); 293 } 294 295 // 296 //////////////////////////////////////////////////////////////////////////// 297 double Modulo (double x, double y) { 298 return y*Frac(x/y); 299 } 300 287 301 // Round to nearest integer 288 302 //////////////////////////////////////////////////////////////////////////// … … 548 562 } 549 563 } 564 565 // 566 ////////////////////////////////////////////////////////////////////////////// 567 void kalman(const Matrix& AA, const ColumnVector& ll, const DiagonalMatrix& PP, 568 SymmetricMatrix& QQ, ColumnVector& dx) { 569 570 Tracer tracer("kalman"); 571 572 int nPar = AA.Ncols(); 573 int nObs = AA.Nrows(); 574 UpperTriangularMatrix SS = Cholesky(QQ).t(); 575 576 Matrix SA = SS*AA.t(); 577 Matrix SRF(nObs+nPar, nObs+nPar); SRF = 0; 578 for (int ii = 1; ii <= nObs; ++ii) { 579 SRF(ii,ii) = 1.0 / sqrt(PP(ii,ii)); 580 } 581 582 SRF.SubMatrix (nObs+1, nObs+nPar, 1, nObs) = SA; 583 SRF.SymSubMatrix(nObs+1, nObs+nPar) = SS; 584 585 UpperTriangularMatrix UU; 586 QRZ(SRF, UU); 587 588 SS = UU.SymSubMatrix(nObs+1, nObs+nPar); 589 UpperTriangularMatrix SH_rt = UU.SymSubMatrix(1, nObs); 590 Matrix YY = UU.SubMatrix(1, nObs, nObs+1, nObs+nPar); 591 592 UpperTriangularMatrix SHi = SH_rt.i(); 593 594 Matrix KT = SHi * YY; 595 SymmetricMatrix Hi; Hi << SHi * SHi.t(); 596 597 dx = KT.t() * ll; 598 QQ << (SS.t() * SS); 599 } 600
Note:
See TracChangeset
for help on using the changeset viewer.