⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gensamples.h

📁 GPS卫星导航接收机的仿真程序。用C语言实现
💻 H
字号:
#ifndef	GENSAMPLES_H

#define	GENSAMPLES_H

#include	"simulator.h"
/* Input Arguments */

#define	TIME_VEC	    prhs[0]
#define	PRN     	    prhs[1]
#define RX_POS          prhs[2]
//#define SV_POS          prhs[3]

/* Output Arguments */

#define	TP_OUT  	    plhs[0]
#define	DOPPLER_OUT	    plhs[1]

#define LightSpeed   299792458.0
#define FrequencyL1  1575.42e6
#define Wedot        7.2921151467e-5  // WGS 84 value of the Earth's rotation rate (radians/second) 

#if 0
typedef struct raw_eph
{
	double    Ttr;       	      // GPS week number
	double    weekn;      	      // Transmit time TOW
	//double    IODE;               //Add
	double    Crs;            
	double    dn;
	double    M0;
	double    Cuc;
	double    ec;
	double    Cus;
	double    sqrtA;
	double    Toe;
	double    Cic;
	double    W0;
	double    Cis;
	double    i0;
	double    Crc;
	double    omeg;
	double    omegdot;
	double    Idot;
	double    Tgd;
	double    Toc;                // should be Toc (time of clock)
	double    af2;
	double    af1;
	double    af0;

	/*double    codeL2;
	double    L2p;
	double    SVaccuracy;
	double    SVhealth;
	double    IODC;*/

}RAW_EPH;
#endif

typedef struct eph_c3
{
	double 	sv;        	// satellite number
	double 	week;       // GPS week number
	double 	zcount;     // seconds of GPS week
	double 	tgd;			// group delay
	double 	aodc;			// clock issue data
	double 	toc;			// reference time of clock
	double 	af2;			// clock parameter (sec/sec2)
	double 	af1;			// clock parameter (sec/sec)
	double 	af0;			// clock parameter (sec)
	double 	aode;			// orbit issue data
	double 	crs;			// harmonic correction term
	double 	deltan;		// mean anomaly correction
	double 	m0;			// mean anomaly at reference time
	double	cuc;			// harmonic correction term
	double	e;				// eccentricity
	double 	cus;			// harmonic correction term
	double 	sqrta;		// square root of semi-major axis
	double 	toe;			// reference time of orbit
	double 	cic;			// harmonic correction term
	double 	omega0;		// longitude of ascending node
	double 	cis;			// harmonic correction term
	double 	i0;			// inclination at reference time
	double 	crc;			// harmonic correction term
	double 	w;				// argument of perigee
	double 	omegdot;		// rate of right ascension
	double 	idot;			// rate of inclination
}	EPH_C3;

/*
typedef struct gps_eph
{
	double   	prn;      	// satellite number
	double      wn;       	// GPS week number
	double   tow;      	// seconds of GPS week
	double   tgd;      	// group delay (sec)
	double   aodc;     	// clock data issue
	double   toc;      	// reference time of clock
	double   af2;      	// clock parameter (sec/sec2)
	double   af1;      	// clock parameter (sec/sec)
	double   af0;      	// clock parameter (sec)
	double   aode;     	// orbit data issue
	double   deltan;   	// mean anomaly correction
	double   m0;       	// mean anomaly at reference time
	double   e;        	// eccentricity
	double   roota;    	// square root of semi-major axis
	double   toe;      	// reference time of orbit
	double   cic;      	// harmonic correction term (rad)
	double   crc;      	// harmonic correction term (m)
	double   cis;      	// harmonic correction term (rad)
	double   crs;      	// harmonic correction term (m)
	double   cuc;      	// harmonic correction term (rad)
	double   cus;      	// harmonic correction term (m)
	double   omega0;   	// longitude of ascending node
	double   omega;    	// argument of perigee
	double   i0;       	// inclinatin at reference time
	double   omegadot; 	// rate of right ascension
	double   idot;     	// rate of inclination
}	EPH_C3;
*/

void	GenComSig( double * t_vect,  int t_length, double **RxPos, int Num_RxPos,
					double **EphData, int Num_eph, double *ComSig_I,double *ComSig_Q, OPTION *pOption );

void	Tp_Doppler(	double Tp[], double Tc[], double time[], int n_T, int prn, double **Rx_pos, int m_RX,OPTION *pOption);

void	Signal_prn(double *sv_signal_I, double *sv_signal_Q, int prn, double * t_vect, int t_length,double **RxPos, int Num_RxPos, 
				   double **EphData, int Num_eph, OPTION *pOption);

void	comp_eph(	int prn_sv, OPTION *pOption, double t  );

void	comp_SV_posvel(int prn, double *xs, double *ys, double *zs, double *vxs, double *vys, double *vzs, double *clk_bias, double t);

void	comp_sat_pos(int prn, double *xsv, double *ysv, double *zsv, double *clk_offset, double t);

void	rotate(double *xs1, double *ys1, double *zs1, double xs2, double ys2, double zs2, double dt);

void	spline(double x[], double y[], int n, double yp1, double ypn, double y2[]);
void	splint(double xa[], double ya[], double y2a[], int n, double x, double *y);
void	splintarray(double xa[], double ya[], double y2a[], int n, double x[], double startvalue,double y[], int m);
void	Read_SVeph( OPTION *pOption, double );

void	Allocate_Mem ( int, int );

void	FREE_Mem( );

int		sv_exist ( int prn );	

int		SV_LOS_detect( int prn, double * Upos, double gps_time);

int		Read_line (char line[], double *p1, double *p2, double *p3, double *p4 );

int		Read_line1( char line[], int *pi1, int *pi2,int *pi3,int *pi4,int *pi5, int *pi6,
				double *pd1, double *pd2, double *pd3, double *pd4 );

int		Read_line2( char line[],double *p1, double *p2, double *p3);

int		Generate_Signalwaveform(OPTION *pOption, double Waveform[] );

double GenerateTropDelay(     double *SvXyz, // satellite position
                              double *StationXyz, // station position
							  OPTION* pOption);

double GenerateIonoDelay(double *SvXyz, double* upos, double gps_time, OPTION* pOption);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -