当前位置: 首页>>代码示例>>C++>>正文


C++ Position::DoubleDiff方法代码示例

本文整理汇总了C++中Position::DoubleDiff方法的典型用法代码示例。如果您正苦于以下问题:C++ Position::DoubleDiff方法的具体用法?C++ Position::DoubleDiff怎么用?C++ Position::DoubleDiff使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Position的用法示例。


在下文中一共展示了Position::DoubleDiff方法的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;
}
开发者ID:amosleeday,项目名称:RTKM,代码行数:57,代码来源:main.cpp

示例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);

}
开发者ID:amosleeday,项目名称:RTKM,代码行数:43,代码来源:main.cpp

示例3: ProcessSingleFixPos


//.........这里部分代码省略.........
			//continue;
		}
		if (fabs(dt)<0.5)
		{
			clock_t start,finish;
			double dura=0.0;
			nEpoch++;
			start=clock();
			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

			}

			

			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;
开发者ID:amosleeday,项目名称:RTKM,代码行数:67,代码来源:main.cpp

示例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;
}
开发者ID:amosleeday,项目名称:RTKM,代码行数:101,代码来源:main.cpp


注:本文中的Position::DoubleDiff方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。