亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sri.cpp

?? linux的gps應用
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#pragma ident "$Id: SRI.cpp 312 2006-11-27 22:14:50Z pben $"//============================================================================////  This file is part of GPSTk, the GPS Toolkit.////  The GPSTk is free software; you can redistribute it and/or modify//  it under the terms of the GNU Lesser General Public License as published//  by the Free Software Foundation; either version 2.1 of the License, or//  any later version.////  The GPSTk is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU Lesser General Public License for more details.////  You should have received a copy of the GNU Lesser General Public//  License along with GPSTk; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//  //  Copyright 2004, The University of Texas at Austin////============================================================================//============================================================================////This software developed by Applied Research Laboratories at the University of//Texas at Austin, under contract to an agency or agencies within the U.S. //Department of Defense. The U.S. Government retains all rights to use,//duplicate, distribute, disclose, or release this software. ////Pursuant to DoD Directive 523024 //// DISTRIBUTION STATEMENT A: This software has been approved for public //                           release, distribution is unlimited.////=============================================================================/** * @file SRI.cpp * Implementation of class SRI. * class SRI implements the square root information methods, used for least squares * estimation and the SRI form of the Kalman filter. * * Reference: "Factorization Methods for Discrete Sequential Estimation," *             by G.J. Bierman, Academic Press, 1977. */// -----------------------------------------------------------------------------------// system#include <string>#include <vector>#include <algorithm>#include <ostream>// GPSTk#include "SRI.hpp"#include "StringUtils.hpp"using namespace std;namespace gpstk{   // --------------------------------------------------------------------------------   // used to mark optional input   const Matrix<double> SRINullMatrix;   //---------------------------------------------------------------------------------   // constructor given the dimension N.   SRI::SRI(const unsigned int N)      throw()   {      R = Matrix<double>(N,N,0.0);      Z = Vector<double>(N,0.0);      names = Namelist(N);   }   // --------------------------------------------------------------------------------   // constructor given a Namelist, its dimension determines the SRI dimension.   SRI::SRI(const Namelist& nl)      throw()   {      if(nl.size() <= 0) return;      R = Matrix<double>(nl.size(),nl.size(),0.0);      Z = Vector<double>(nl.size(),0.0);      names = nl;   }   // --------------------------------------------------------------------------------   // explicit constructor - throw if the dimensions are inconsistent.   SRI::SRI(const Matrix<double>& r,            const Vector<double>& z,            const Namelist& nl)      throw(MatrixException)   {      if(r.rows() != r.cols() || r.rows() != z.size() || r.rows() != nl.size()) {         using namespace StringUtils;                  MatrixException me("Invalid dimensions in explicit SRI constructor:\n R is "               + asString<int>(r.rows()) + "x"               + asString<int>(r.cols()) + ", Z has length "               + asString<int>(z.size()) + " and NL has length "               + asString<int>(nl.size())               );         GPSTK_THROW(me);      }      if(r.rows() <= 0) return;      R = r;      Z = z;      names = nl;   }   // --------------------------------------------------------------------------------   // copy constructor   SRI::SRI(const SRI& s)      throw()   {      R = s.R;      Z = s.Z;      names = s.names;   }   // --------------------------------------------------------------------------------   // operator=   SRI& SRI::operator=(const SRI& right)      throw()   {      R = right.R;      Z = right.Z;      names = right.names;      return *this;   }   // ---------------------------------------------------------------------------   // modify SRIs   // --------------------------------------------------------------------------------   // Permute the SRI elements to match the input Namelist, which may differ with   // the SRI Namelist by AT MOST A PERMUTATION, throw if this is not true.   void SRI::permute(const Namelist& nl)      throw(MatrixException,VectorException)   {      if(identical(names,nl)) return;      if(names != nl) {         MatrixException me("Invalid input: Namelists must be == to permute");         GPSTK_THROW(me);      }      try {         unsigned int i,j;         // build a permutation matrix         Matrix<double> P(R.rows(),R.rows(),0.0);         for(i=0; i<R.rows(); i++) {            j = nl.index(names.getName(i));            P(j,i) = 1;         }         Matrix<double> B;         Vector<double> Q;         B = P * R * transpose(P);         Q = P * Z;         // re-triangularize         R = 0.0;         Z = 0.0;         SrifMU(R,Z,B,Q);         names = nl;      }      catch(MatrixException& me) {         GPSTK_RETHROW(me);      }      catch(VectorException& ve) {         GPSTK_RETHROW(ve);      }   }   // --------------------------------------------------------------------------------   // Split this SRI (call it S) into two others, S1 and Sleft, where S1 has   // a Namelist identical to the input Namelist (NL); set *this = S1 at the   // end. NL must be a non-empty subset of names, and (names ^ NL) also must   // be non-empty; throw MatrixException if this is not true. The second   // output SRI, Sleft, will have the same names as S, but perhaps permuted.   //   // The routine works by first permuting S so that its Namelist if of the   // form {N2,NL}, where N2 = (names ^ NL); this is possible only if NL is   // a non-trivial subset of names. Then, the rows of S (rows of R and elements   // of Z) naturally separate into the two component SRIs, with zeros in the   // elements of the first SRI which correspond to N2, and those in Sleft   // which correspond to NL.   //   //    Example:    S.name = A B C D E F G and NL = D E F G.   // (Obviously, S may be permuted into such an order whenever this is needed.)   // Note that here the R,Z pair is written in a format reminiscent of the   // set of equations implied by R*X=Z, i.e. 1A+2B+3C+4D+5E+6F+7G=a, etc.   //   //          S (R Z)       =         S1            +         Sleft   // with    names                       NL                  names   //     A B C D E F G           . . . D E F G           A B C D E F G      //     - - - - - - -  -        - - - - - - -  -        - - - - - - -  -   //     1 2 3 4 5 6 7  a   =    . . . . . . .  .   +    1 2 3 4 5 6 7  a   //       8 9 1 2 3 4  b          . . . . . .  .          8 9 1 2 3 4  b   //         5 6 7 8 9  c            . . . . .  .            5 6 7 8 9  c   //           1 2 3 4  d              1 2 3 4  d              . . . .  d   //             5 6 7  e                5 6 7  e                . . .  e   //               8 9  f                  8 9  f                  . .  f   //                 1  g                    1  g                    .  g   //   // where "." denotes a zero.  The split is simply separating the linear   // equations which make up R*X=Z into two groups; because of the ordering,   // one of the groups of equations (S1) depends only on a particular subset   // of the elements of the state vector, i.e. the elements labelled by the   // Namelist NL.   //   // The equation shown here is an information equation; if the two SRIs S1   // and Sleft were merged again, none of the information would be lost.   // Note that S1 has no dependence on A B C (hence the .'s), and therefore   // its size can be reduced. However S2 still depends on the full names   // Namelist. Sleft is necessarily singular, but S1 is not.   //   // Note that the SRI contains information about both the solution and   // the covariance, i.e. state and noise, and therefore one must be very careful   // in interpreting the results of split and merge (operator+=). [Be especially   // careful about the idea that a merge might be reversible with a split() or   // vice-versa - strictly this is never possible unless the Namelists are   // mutually exclusive - two separate problems.]   //   // For example, suppose two different SRI's, which have some elements in common,   // are merged. The combined SRI will have more information (it can't have less)   // about the common elements, and therefore the solution will be 'better'   // (assuming the underlying model equations for those elements are identical).   // However the noises will also be combined, and the results you get might be   // surprising. Also, note that if you then split the combined SRI again, the   // solution won't change but the noises will be very different; in particular   // the new split part will take all the information with it, so the common states   // will have lower noise than they did in the original SRI.   // See the test program tsri.cpp   //   void SRI::split(const Namelist& NL, SRI& Sleft)      throw(MatrixException,VectorException)   {      try {         Sleft = SRI(0);         unsigned int n,m;         n = NL.size();         m = names.size();         if(n >= m) {            MatrixException me("Input Namelist must be a subset of this one");            GPSTK_THROW(me);         }         unsigned int i,j;            // copy names and permute it so that its end matches NL          Namelist N0(names);         for(i=1; i<=n; i++) {           // loop (backwards) over names in NL            for(j=1; j<=m; j++) {        // search (backwards) in NO for a match               if(NL.labels[n-i] == N0.labels[m-j]) {  // if found a match                  N0.swap(m-i,m-j);      // then move matching name to end                  break;                 // and go on to next name in NL               }            }            if(j > m) {               MatrixException me("Input Namelist is not a non-trivial subset");               GPSTK_THROW(me);            }         }            // copy *this into Sleft, then do the permutation         Sleft = *this;         Sleft.permute(N0);            // copy parts of Sleft into S1, and then zero out those parts of Sleft         SRI S1(NL);         S1.R = Matrix<double>(Sleft.R,m-n,m-n,n,n);         //S1.Z = Vector<double>(Sleft.Z,m-n,n);         S1.Z.resize(n);         for(i=0; i<n; i++) S1.Z(i) = Sleft.Z(m-n+i);         for(i=m-n; i<m; i++) Sleft.zeroOne(i);         *this = S1;      }      catch(MatrixException& me) {         GPSTK_RETHROW(me);      }      catch(VectorException& ve) {         GPSTK_RETHROW(ve);      }   }   // --------------------------------------------------------------------------------   // extend this SRI to include the given Namelist, with no added information;   // names in the input namelist which are not unique are ignored.   SRI& SRI::operator+=(const Namelist& NL)      throw(MatrixException,VectorException)   {      try {         Namelist B(names);            // NB assume that Namelist::operator|=() adds at the _end_         B |= NL;            // NB assume that this zeros A.R and A.Z         SRI A(B);            // should do this with slices..            // copy into the new SRI         for(unsigned int i=0; i<R.rows(); i++) {            A.Z(i) = Z(i);            for(unsigned int j=0; j<R.cols(); j++) A.R(i,j) = R(i,j);         }         *this = A;         return *this;      }      catch(MatrixException& me) {         GPSTK_RETHROW(me);      }      catch(VectorException& ve) {         GPSTK_RETHROW(ve);      }   }   // --------------------------------------------------------------------------------   // reshape this SRI to match the input Namelist, by calling other member   // functions, including split(), operator+() and permute()   // Given this SRI and a new Namelist NL, if NL does not match names,   // transform names to match it, using (1) drop elements (this is probably   // optional - you can always keep 'dead' elements), (2) add new elements   // (with zero information), and (3) permute to match NL.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费的精品国产v∧| 五月天精品一区二区三区| 亚洲猫色日本管| 蜜桃一区二区三区在线| av在线播放不卡| 欧美一级夜夜爽| 国产精品久久三| 国产美女视频一区| 欧美日韩国产免费一区二区| 中文字幕在线一区| 久久精品噜噜噜成人av农村| 在线区一区二视频| 日韩欧美国产综合| 午夜精品久久久久久久久久久| 国产99久久久精品| 精品久久国产字幕高潮| 亚洲大片精品永久免费| 色综合天天综合色综合av | 日韩中文欧美在线| 91免费版在线| 国产精品美女久久久久aⅴ | 奇米精品一区二区三区在线观看一 | 欧美精品日韩精品| 成人免费视频在线观看| 国产成人久久精品77777最新版本| 欧美日韩免费一区二区三区| 亚洲六月丁香色婷婷综合久久 | 亚洲国产精品久久久男人的天堂| 成人国产精品免费| 国产精品看片你懂得| 国产91丝袜在线18| 国产午夜久久久久| 国产传媒久久文化传媒| 国产午夜亚洲精品羞羞网站| 国产一区二区导航在线播放| 亚洲精品一区二区三区精华液 | 国产白丝精品91爽爽久久| 久久综合久久久久88| 韩国一区二区视频| 欧美精品一区视频| 国产成人精品影视| 国产精品情趣视频| 91在线精品一区二区| 亚洲欧美乱综合| 欧美三区免费完整视频在线观看| 亚洲午夜精品在线| 精品国产一区二区三区久久久蜜月| 亚洲国产视频直播| 欧美一级日韩免费不卡| 久久99久久99| 国产欧美综合在线观看第十页| 国产成人免费av在线| 国产精品色呦呦| 欧美无人高清视频在线观看| 日韩精品欧美成人高清一区二区| 91精品中文字幕一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 精品欧美久久久| 成人app软件下载大全免费| 亚洲乱码国产乱码精品精的特点| 欧美精品三级日韩久久| 国产真实乱对白精彩久久| 国产精品萝li| 欧美日韩国产首页| 国产成人综合视频| 亚洲国产一区二区在线播放| 欧美tk—视频vk| 色综合天天性综合| 毛片av一区二区| 亚洲天堂精品视频| 精品精品国产高清a毛片牛牛| 成人高清免费在线播放| 日韩va欧美va亚洲va久久| 国产午夜精品在线观看| 欧美日韩不卡一区二区| 国产在线看一区| 一区二区成人在线观看| 久久久国产精品麻豆| 欧美日韩中文字幕一区二区| 国产福利91精品一区二区三区| 亚洲主播在线观看| 国产精品进线69影院| 日韩精品一区二区三区在线播放| 一本大道av伊人久久综合| 激情国产一区二区| 性欧美大战久久久久久久久| 国产精品久久久久永久免费观看 | 久久综合色播五月| 欧美精品久久99| 91视频com| 成人综合婷婷国产精品久久| 日韩精品免费视频人成| 亚洲欧美另类综合偷拍| 国产欧美一区二区精品婷婷| 欧美一区二区精品| 欧美日韩一级二级| 色婷婷精品大在线视频| 成人免费视频视频在线观看免费| 青青国产91久久久久久| 亚洲高清在线视频| 一区二区三区色| 国产精品麻豆视频| 亚洲国产精品黑人久久久| 日韩欧美一区二区视频| 欧美视频三区在线播放| 色狠狠桃花综合| 99久久精品国产导航| 国产激情一区二区三区四区| 久88久久88久久久| 青青青伊人色综合久久| 日本欧美久久久久免费播放网| 亚洲影院久久精品| 一区二区高清视频在线观看| 1000精品久久久久久久久| 国产精品日韩成人| 国产精品免费视频网站| 国产精品污www在线观看| 国产日本亚洲高清| 中文字幕精品在线不卡| 中文字幕欧美区| 中文字幕一区在线| 综合久久久久综合| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区中文字幕精品精品| 亚洲精品视频免费观看| 亚洲中国最大av网站| 天堂蜜桃一区二区三区| 日韩**一区毛片| 久久97超碰国产精品超碰| 国产一区二区在线免费观看| 国产成人福利片| 91伊人久久大香线蕉| 欧美在线你懂的| 欧美一区中文字幕| 久久久精品一品道一区| 国产精品日产欧美久久久久| 亚洲精品亚洲人成人网在线播放| 亚洲综合一区二区三区| 免费观看在线综合色| 国产精品亚洲成人| 91久久精品网| 日韩无一区二区| 中文字幕电影一区| 亚洲综合无码一区二区| 久久精品久久久精品美女| 国产精品1区二区.| 在线观看免费一区| 精品国产免费久久| 亚洲免费观看高清在线观看| 欧美a一区二区| jlzzjlzz亚洲日本少妇| 欧美久久久久久久久久| 国产亚洲婷婷免费| 亚洲成人在线免费| 国产传媒久久文化传媒| 精品视频一区二区三区免费| 久久精品亚洲精品国产欧美| 一区二区三区在线影院| 久久国产精品72免费观看| 91香蕉视频在线| 欧美zozozo| 一区二区三区在线视频免费观看| 精品一区免费av| 在线视频欧美精品| 欧美激情在线观看视频免费| 偷拍亚洲欧洲综合| www.日本不卡| 亚洲精品在线三区| 五月天精品一区二区三区| 99久久精品费精品国产一区二区| 91精品国产一区二区三区香蕉 | 久久综合精品国产一区二区三区| 亚洲精品乱码久久久久久久久| 经典三级一区二区| 欧美日韩国产一区二区三区地区| 国产精品视频九色porn| 久久99精品视频| 欧美电影一区二区三区| 中文字幕一区二区三区在线观看| 精品夜夜嗨av一区二区三区| 欧美日韩国产首页在线观看| 亚洲三级免费观看| 国产不卡视频在线播放| www久久久久| 蜜臀av在线播放一区二区三区| 91国产免费看| 亚洲乱码中文字幕| 99久久婷婷国产| 国产精品午夜久久| 福利一区二区在线| 久久久久久久久久美女| 国内精品在线播放| 亚洲精品中文在线影院| 国产jizzjizz一区二区| 久久蜜桃一区二区| 国产在线国偷精品免费看| 日韩欧美激情四射| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲欧美激情小说另类| av网站免费线看精品|