本文整理汇总了C++中Position::FormDdErrEq方法的典型用法代码示例。如果您正苦于以下问题:C++ Position::FormDdErrEq方法的具体用法?C++ Position::FormDdErrEq怎么用?C++ Position::FormDdErrEq使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Position
的用法示例。
在下文中一共展示了Position::FormDdErrEq方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SingleSys
void SingleSys(Position spp,DdData& dddataPre,DdData& dddataCurr,SdData& lastSdData,ObsEpochData& roverData1,ObsEpochData& baseData1,
SppCtrl sppctrl,DdCtrl ddctrl, DdAmbInfo& ambinfo,DdAmbInfo& preambinfo,SppInfo sppinfo,SppInfo baseInfo,DdObsInfo ddobsinfo1,
BroadEphHeader brdephheader,BroadEphData* broadephdata,BroadEphDataGlo* gloeph,int nSate,int nSateGlo,
ObsHeader obsHeader1,ObsEpochData epochData1,ObsHeader obsHeader2,ObsEpochData epochData2,
double* baseCrd,double* roverCrd,int& nEpoch, int sysidUse,math::matrix<double>* NormEqu)
{
lastSdData.ZeroElem();roverData1.ZeroElem(); baseData1.ZeroElem(); sppinfo.ZeroElem(); baseInfo.ZeroElem();
if (sysidUse==1 || sysidUse==3 ||sysidUse==5)
{
spp.StandPosition(brdephheader,broadephdata,epochData1,nSate,sppctrl,sppinfo,roverData1);
spp.baseStn(baseInfo,broadephdata,epochData2,baseData1,nSate,sppctrl);
}
else if(sysidUse==2)
{
//spp.StandPosition(brdephheader,gloeph,epochData1,nSateGlo,sppctrl,sppinfoGlo,roverData);//Glo
//spp.baseStn(baseInfoGlo,gloeph,epochData2,baseData,nSateGlo,sppctrl);//glo
}
if(Norm(roverCrd,3)>0.0) PtrEqual(roverCrd,sppinfo.recPos,3);
int refPrn=0;
ddobsinfo1.ZeroEle();
int tprn=0;
refPrn=spp.SelectRefSate(baseInfo,sppinfo,5.0,baseData1,roverData1,lastSdData,ddobsinfo1,0,tprn);
int refpos;
refpos=GetPos(lastSdData.prn,refPrn,lastSdData.satnum);
dddataCurr.ZeroElem(); ambinfo.ZeroElem();
spp.DoubleDiff(refPrn,refpos,lastSdData,dddataCurr);
if(dddataCurr.pairNum<4) exit(1);
//DdData ts=dddataCurr;
/* -----------------------------------------end data preparation part ---------------------------------------*/
dddataCurr=spp.ComObsPhsCod(ddctrl,ddobsinfo1,ambinfo,dddataCurr);
//if(nEpoch>1) spp.PassPreAmb(preambinfo,ambinfo,ddctrl.PhsTypeNo());
/* -----------------------------------------end cycle slip---------------------------------------- */
int obsNum =ddobsinfo1.SumCod()+ddobsinfo1.SumPhs();//the number of all obs in one system at current epoch
int phsNum =ddobsinfo1.SumPhs();
int ionoNum=dddataCurr.pairNum;
int ambNum=ambinfo.SumUnfix();
//if(nEpoch>1)ambNum=preambinfo.SumUnfix();
if(ambNum==0) ambNum=1;
/* equation part */
math::matrix<double> DesMatPos(obsNum,3);
math::matrix<double> DesMatAmb(obsNum,ambNum);
math::matrix<double> Weight(obsNum,obsNum);
math::matrix<double> L(obsNum,1);
math::matrix<double> DesMatTrop(obsNum,1);
math::matrix<double> DesMatIono(obsNum,obsNum);
spp.FormDdErrEq(DesMatPos,DesMatTrop,DesMatIono,DesMatAmb,L,dddataCurr,ddctrl,ambinfo,ddobsinfo1);
Weight=spp.FormWeightVc(ddctrl,dddataCurr,ddobsinfo1);
NormEqu[0]=~DesMatPos*Weight*(DesMatPos); NormEqu[1]=~DesMatPos*Weight*(DesMatAmb);
NormEqu[2]=~DesMatAmb*Weight*(DesMatAmb); NormEqu[3]=~DesMatPos*Weight*L;
NormEqu[4]=~DesMatAmb*Weight*L;
}
示例2: RtkGlo
void RtkGlo(Position spp,ObsEpochData& baseData1,SppCtrl sppctrl,DdCtrl ddctrl, BroadEphHeader brdephheader,BroadEphData* broadephdata,
BroadEphDataGlo* gloeph,int nSateGlo, ObsHeader obsHeader1,ObsEpochData epochData1,ObsHeader obsHeader2,ObsEpochData epochData2,
double* baseCrd,double* roverCrd,math::matrix<double>& N11)
{
DdData dddataCurr;SdData lastSdData; ObsEpochData roverData,baseData;
DdObsInfo ddobsinfo;SppInfoGlo sppinfo, baseInfoGlo;DdAmbInfo ambinfo;
spp.StandPosition(brdephheader,gloeph,epochData1,nSateGlo,sppctrl,sppinfo,roverData);
spp.baseStn(baseInfoGlo,gloeph,epochData2,baseData,nSateGlo,sppctrl);//glo
roverData.Cycle2MeterGlo(sppinfo.freqNum);
baseData.Cycle2MeterGlo(baseInfoGlo.freqNum);
if(Norm(roverCrd,3)>0.0) PtrEqual(roverCrd,sppinfo.recPos,3);
int* dNum=new int[max(baseInfoGlo.validnum, sppinfo.validnum)];
int tprn=0;
int refPrn= spp.SelectRefSate(baseInfoGlo,sppinfo,5.0,baseData,roverData,lastSdData,ddobsinfo,dNum);
int refpos=GetPos(lastSdData.prn,refPrn,lastSdData.satnum);
dddataCurr.ZeroElem(); ambinfo.ZeroElem();
spp.DoubleDiff(refPrn,refpos,lastSdData,dddataCurr);
if(dddataCurr.pairNum<4) exit(1);
/* -----------------------------------------end data preparation part ---------------------------------------*/
// dddataCurr=spp.ComObsPhsCod(ddctrl,ddobsinfo,ambinfo,dddataCurr,sppinfo);// units of obs : m
/* -----------------------------------------end cycle slip---------------------------------------- */
int obsNum =ddobsinfo.SumCod()+ddobsinfo.SumPhs();//the number of all obs in one system at current epoch
int phsNum =ddobsinfo.SumPhs();
int ionoNum=dddataCurr.pairNum;
int ambNum=ambinfo.SumUnfix();
//if(nEpoch>1)ambNum=preambinfo.SumUnfix();
if(ambNum==0) ambNum=1;
/* equation part */
math::matrix<double> DesMatPos(obsNum,3);
math::matrix<double> DesMatAmb(obsNum,ambNum);
math::matrix<double> Weight(obsNum,obsNum);
math::matrix<double> L(obsNum,1);
math::matrix<double> DesMatTrop(obsNum,1);
math::matrix<double> DesMatIono(obsNum,obsNum);
spp.FormDdErrEq(DesMatPos,DesMatTrop,DesMatIono,DesMatAmb,L,dddataCurr,ddctrl,ambinfo,ddobsinfo);
}
示例3: ProcessSingleFixPos
//.........这里部分代码省略.........
if(Norm(roverCrd,3)>0.0) PtrEqual(roverCrd,sppinfo.recPos,3);
int refPrn=0;
ddobsinfo.ZeroEle();
refPrn=spp.SelectRefSate(baseInfo,sppinfo,5.0,baseData,roverData,lastSdData,ddobsinfo,1,tprn);
int refpos;
refpos=GetPos(lastSdData.prn,refPrn,lastSdData.satnum);
dddataCurr.ZeroElem(); ambinfo.ZeroElem();
spp.DoubleDiff(refPrn,refpos,lastSdData,dddataCurr);
if(dddataCurr.pairNum<4) continue;//exit(1)
DdData ts=dddataCurr;
/* -----------------------------------------end data preparation part ---------------------------------------*/
dddataCurr=spp.ComObsPhsCod(ddctrl,ddobsinfo,ambinfo,dddataCurr);
//if(nEpoch>1) spp.PassPreAmb(preambinfo,ambinfo,ddctrl.PhsTypeNo());
/* -----------------------------------------end cycle slip---------------------------------------- */
for (int s=0;s<dddataCurr.pairNum;s++) dddataCurr.tropCor[s]=ts.tropCor[s];
int obsNum =ddobsinfo.SumCod()+ddobsinfo.SumPhs();//the number of all obs in one system at current epoch
int phsNum =ddobsinfo.SumPhs();
int ionoNum=dddataCurr.pairNum;
int ambNum=ambinfo.SumUnfix();
//if(nEpoch>1)ambNum=preambinfo.SumUnfix();
if(ambNum==0) ambNum=1;
/* equation part */
math::matrix<double> DesMatPos(obsNum,3);
math::matrix<double> DesMatAmb(obsNum,ambNum);
math::matrix<double> Weight(obsNum,obsNum);
math::matrix<double> L(obsNum,1);
math::matrix<double> DesMatTrop(obsNum,1);
math::matrix<double> DesMatIono(obsNum,dddataCurr.pairNum);
spp.FormDdErrEq(DesMatPos,DesMatTrop,DesMatIono,DesMatAmb,L,dddataCurr,ddctrl,ambinfo,ddobsinfo);
math::matrix<double> DesMatTrop_Hour(obsNum,1);
double firstTime=0.0,curTime=0.0;
spp.FormDesMatTrop_ReNew(ddctrl, nEpoch, firstTime, curTime, roverData,dddataCurr, dddataPre,ptrMapCur, ptrMapPre,DesMatTrop, DesMatTrop_Hour,3600.0);
Weight=spp.FormWeightVc(ddctrl,dddataCurr,ddobsinfo);
math::matrix<double>DesAtmos=DesMatIono;
DesMatAmb=ConvergeMat(DesMatTrop_Hour.RowNo(),DesMatTrop_Hour,DesMatAmb);
math::matrix<double>Natmos=~DesMatIono*Weight*DesMatIono;
math::matrix<double>Namb=~DesMatAmb*Weight*DesMatAmb;
math::matrix<double>Natsam=~DesMatIono*Weight*DesMatAmb;
math::matrix<double>Uatmos=~DesMatIono*Weight*L;
math::matrix<double>Ua=~DesMatAmb*Weight*L;
math::matrix<double> Uaaa,Uatat,Qaaa;
math::matrix<double>Qamb,Qbb,Qb_amb;
if (nEpoch==1)
{
Nneq=Namb;
Uneq=Ua;
Uaaa=Ua;
Uatat=Uatmos;
SolveNEQCholesky2(Natmos,Natsam,Nneq,Qamb,Qb_amb,Qbb,Uatat,Uaaa,Nneq.RowNo(),Natmos.RowNo());
/*reduction of atmos parameters*/
Nneq=Namb-~Natsam*CholeskyInv(Natmos)*Natsam;
Uneq=Ua-~Natsam*CholeskyInv(Natmos)*Uatmos;
}
/****************************method 1**********************************Ё§*/
/*the LSE of current epoch*/
math::matrix<double>invNatmos=CholeskyInv(Natmos);
示例4: ProcessSingle
//.........这里部分代码省略.........
{
nEpoch++;
lastSdData.ZeroElem();
roverData.ZeroElem(); baseData.ZeroElem(); sppinfo.ZeroElem(); baseInfo.ZeroElem();
if (sysidUse==1 || sysidUse==3 ||sysidUse==5)
{
spp.StandPosition(brdephheader,broadephdata,epochData1,nSate,sppctrl,sppinfo,roverData);
spp.baseStn(baseInfo,broadephdata,epochData2,baseData,nSate,sppctrl);
}
else if(sysidUse==2)
{
spp.StandPosition(brdephheader,gloeph,epochData1,nSateGlo,sppctrl,sppinfoGlo,roverData);//Glo
spp.baseStn(baseInfoGlo,gloeph,epochData2,baseData,nSateGlo,sppctrl);//glo
}
int t0,t1,t2,t3;
t0=((int)roverData.sec%86400);
t1=t0/3600; //hour
t2=(t0-t1*3600)/60; //hour
t3=(t0-t1*3600-t2*60)%60;
#if FileOutSpp
//fout<<"epoch: "<<t1<<" "<<t2<<" "<<t3<<endl;
//SppFileOut(fout,sppinfo);
#endif
if (nEpoch>288)
{
nEpoch=nEpoch;
}
//continue;
if(Norm(roverCrd,3)>0.0) PtrEqual(roverCrd,sppinfo.recPos,3);
int refPrn=0;
ddobsinfo.ZeroEle();
int tprn=0;
refPrn=spp.SelectRefSate(baseInfo,sppinfo,5.0,baseData,roverData,lastSdData,ddobsinfo,0,tprn);
int refpos;
refpos=GetPos(lastSdData.prn,refPrn,lastSdData.satnum);
dddataCurr.ZeroElem(); ambinfo.ZeroElem();
spp.DoubleDiff(refPrn,refpos,lastSdData,dddataCurr);
if(dddataCurr.pairNum<4) exit(1);
DdData ts=dddataCurr;
/* -----------------------------------------end data preparation part ---------------------------------------*/
dddataCurr=spp.ComObsPhsCod(ddctrl,ddobsinfo,ambinfo,dddataCurr);
if(nEpoch>1) spp.PassPreAmb(preambinfo,ambinfo,ddctrl.PhsTypeNo());
/* -----------------------------------------end cycle slip---------------------------------------- */
int obsNum =ddobsinfo.SumCod()+ddobsinfo.SumPhs();//the number of all obs in one system at current epoch
int phsNum =ddobsinfo.SumPhs();
int ionoNum=dddataCurr.pairNum;
int ambNum=ambinfo.SumUnfix();
//if(nEpoch>1)ambNum=preambinfo.SumUnfix();
if(ambNum==0) ambNum=1;
/* equation part */
math::matrix<double> DesMatPos(obsNum,3);
math::matrix<double> DesMatAmb(obsNum,ambNum);
math::matrix<double> Weight(obsNum,obsNum);
math::matrix<double> L(obsNum,1);
math::matrix<double> DesMatTrop(obsNum,1);
math::matrix<double> DesMatIono(obsNum,obsNum);
spp.FormDdErrEq(DesMatPos,DesMatTrop,DesMatIono,DesMatAmb,L,dddataCurr,ddctrl,ambinfo,ddobsinfo);
Weight=spp.FormWeightVc(ddctrl,dddataCurr,ddobsinfo);
/*--------------------- end processing method------------------- */
int resultflag=0; double ratio=0.0;
if(nEpoch%1000==0) cout<<nEpoch<<endl;
if (nEpoch>0)
{
double xxb[3];
math::matrix<double>xb=SoluShortEpoch(ddctrl,DesMatPos,DesMatAmb,Weight,L,ddobsinfo,ambinfo,resultflag,ratio);
preambinfo=ambinfo;
for(int i=0;i<3;i++) xxb[i]=xb(i,0)+sppinfo.recPos[i];
fout<<resultflag<<" "<<dddataCurr.pairNum<<" "<<~XYZ2NEU(sppinfo.recPos,xxb);
//cout<<~XYZ2NEU(sppinfo.recPos,xxb);
preddobsinfo=ddobsinfo;
}
// int t0,t1,t2,t3;
//t0=((int)dddataCurr.sec%86400);
//t1=t0/3600; //hour
//t2=(t0-t1*3600)/60; //hour
//t3=(t0-t1*3600-t2*60)%60;
//cout<<"ratio "<<ratio<<" "<<t1<<" "<<t2<<" "<<t3<<" "<<dddataCurr.pairNum<<" "<<nEpoch<<endl;
//cout<<endl;
dddataPre =dddataCurr;
/* end equation part */
}
else
{
if (dt>0.0) epochData2=readdata.GetEpochData(Ofile2,line2,obsHeader2,nEpoch2,eventFlag2);
else epochData1=readdata.GetEpochData(Ofile1,line1,obsHeader1,nEpoch1,eventFlag1);
}
if (eventFlag1==10 || eventFlag2==10) nEpoch1++;
}//end while
fout.close();
Ofile1.Close();
Ofile2.Close();
delete[] broadephdata,gloeph;
}