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

📄 hifi_f16_aerodata.c

📁 这是建立F16的非线性simulink模型
💻 C
📖 第 1 页 / 共 4 页
字号:
/*---------------------------------------------------------------------- *//*                                                                       *//* Hifi aerodata                                                         *//* taken from Richard S. Russell's F-16 model                            *//*                                                                       *//*---------------------------------------------------------------------- */double	*getALPHA1(){FILE *fp = fopen("aerodata/ALPHA1.dat","r");int i;double *alpha1,data;if(fp==NULL)	mexErrMsgTxt("Can't find file ALPHA1.dat");alpha1 = doubleVector(20);for(i=0;i<20;i++){	fscanf(fp,"%lf",&data);	alpha1[i] = data;	}fclose(fp);return(alpha1);}double	*getALPHA2(){FILE *fp = fopen("aerodata/ALPHA2.dat","r");int i;double *alpha2,data;if(fp==NULL)	mexErrMsgTxt("Can't find file ALPHA2.dat");alpha2 = doubleVector(14);for(i=0;i<14;i++){	fscanf(fp,"%lf",&data);	alpha2[i] = data;	}fclose(fp);return(alpha2);}double	*getBETA1(){FILE *fp = fopen("aerodata/BETA1.dat","r");int i;double *beta1,data;if(fp==NULL)	mexErrMsgTxt("Can't find file BETA1.dat");beta1 = doubleVector(19);for(i=0;i<19;i++){	fscanf(fp,"%lf",&data);	beta1[i] = data;	}fclose(fp);return(beta1);}double	*getDH1(){FILE *fp = fopen("aerodata/DH1.dat","r");int i;double *dh1,data;if(fp==NULL)	mexErrMsgTxt("Can't find file DH1.dat");dh1 = doubleVector(5);for(i=0;i<5;i++){	fscanf(fp,"%lf",&data);	dh1[i] = data;	}fclose(fp);return(dh1);}double	*getDH2(){FILE *fp = fopen("aerodata/DH2.dat","r");int i;double *dh2,data;if(fp==NULL)	mexErrMsgTxt("Can't find file DH2.dat");dh2 = doubleVector(3);for(i=0;i<3;i++){	fscanf(fp,"%lf",&data);	dh2[i] = data;	}fclose(fp);return(dh2);}double	*getDH3(){FILE *fp = fopen("aerodata/DH3.dat","r");int i;double *dh3,data;if(fp==NULL)	mexErrMsgTxt("Can't find file DH3.dat");dh3 = doubleVector(7);for(i=0;i<7;i++){	fscanf(fp,"%lf",&data);	dh3[i] = data;	}fclose(fp);return(dh3);}double _Cx(double alpha_in,double beta_in,double dele){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 3; 	double x[3];		FILESIZE = 1900;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19; 		ndinfo.nPoints[2] = 5; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		X[2] = getDH1();		fp = fopen("aerodata/f16CX.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16CX.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;	x[2] = dele;    return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cz(double alpha_in,double beta_in, double dele){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 3; /* alpha_in,beta_in,dele */	double x[3];	/* Number of dimension */	FILESIZE = 1900;	/* There are 1900 elements in the 20x19x5 3D array */	/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); /* There are 1900 elements */		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;	/* alpha_in npoints */		ndinfo.nPoints[1] = 19; /* beta_in npoints  */		ndinfo.nPoints[2] = 5;  /* dele npoints  */		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		X[2] = getDH1();		fp = fopen("aerodata/f16CZ.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16CZ.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;	x[2] = dele;    return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cm(double alpha_in,double beta_in,double dele){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 3; 	double x[3];		FILESIZE = 1900;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19; 		ndinfo.nPoints[2] = 5; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		X[2] = getDH1();		fp = fopen("aerodata/f16Cm.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16Cm.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;	x[2] = dele;    return	interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cy(double alpha_in,double beta_in){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 380;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		fp = fopen("aerodata/f16CY.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16CY.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;    return	interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cn(double alpha_in, double beta_in, double dele){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 3; 	double x[3];		FILESIZE = 1140;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19;			ndinfo.nPoints[2] = 3;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		X[2] = getDH2();		fp = fopen("aerodata/f16Cn.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16Cn.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;	x[2] = dele;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cl(double alpha_in, double beta_in,double dele){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 3; 	double x[3];		FILESIZE = 1140;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19;			ndinfo.nPoints[2] = 3;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		X[2] = getDH2();		fp = fopen("aerodata/f16Cl.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16Cl.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;	x[2] = dele;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cx_lef(double alpha_in,double beta_in){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("aerodata/f16CX_lef.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16CX_lef.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;    return	interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cz_lef(double alpha_in,double beta_in){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("aerodata/f16CZ_lef.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16CZ_lef.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;    return	interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cm_lef(double alpha_in,double beta_in){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19; 		X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("aerodata/f16Cm_lef.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file f16Cm_lef.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha_in;	x[1] = beta_in;    return	interpn(X,DATA,x,ndinfo);}/* End of function(...) */

⌨️ 快捷键说明

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