#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <math.h>
int main(void)
{
FILE *InputFile, *OutputFile;
char *InputFileName, *OutputFileName;
char String1[2000], String2[2000];
char String[2000], String3[2000];
char *NumberStr, *XStr, *YStr;
int Number;
double XValue,YValue, DeltX, DeltY;
double X0,Y0, DeltX0, DeltY0;
double XSum, YSum, MX, MY;
double XMaxValue, XMinValue;
double YMaxValue, YMinValue;
double XRMSValue,X0RMSValue;
double TempXRMS,TempX0RMS;
double YRMSValue,Y0RMSValue;
double TempYRMS,TempY0RMS;
printf("Plesase Enter Input File Name:");
scanf("%s",InputFileName);
if ((InputFile = fopen(InputFileName, "rt"))
== NULL)
{
printf("InputFile Not Exist, Cannot Open.\n");
return 0;
}
printf("Plesase Enter Output File Name:");
scanf("%s",OutputFileName);
if ((OutputFile = fopen(OutputFileName, "w+t"))
== NULL)
{
printf("OutFile Not Exist, Cannot Open.\n");
return 0;
}
printf("Plesase Enter Known Point X0 Value: ");
scanf("%lf",&X0);
printf("Plesase Enter Known Point Y0 Value: ");
scanf("%lf",&Y0);
/* Initial X */
rewind(InputFile);
fgets(String,2000,InputFile); /* Fist Line */
fgets(String,2000,InputFile); /* second Line */
fgets(String,2000,InputFile); /* third Line */
fgets(String,2000,InputFile); /* fouth Line */
strcpy(String1,String);
XStr=String1+17;
*(String1+30)='\0';
XValue=atof(XStr);
XMaxValue=XValue;
XMinValue=XValue;
XSum=XValue;
Number=1;
fgets(String,2000,InputFile);
while(!feof(InputFile))
{
strcpy(String1,String);
XStr=String1+17;
*(String1+30)='\0';
XValue=atof(XStr);
if(XValue>=XMaxValue) XMaxValue=XValue;
if(XValue<XMinValue) XMinValue=XValue;
XSum+=XValue;
Number++;
fgets(String,2000,InputFile);
};
MX=XSum/Number;
/* Initial Y */
rewind(InputFile);
fgets(String,2000,InputFile); /* Fist Line */
fgets(String,2000,InputFile); /* second Line */
fgets(String,2000,InputFile); /* third line */
fgets(String,2000,InputFile); /* fouth Line */
strcpy(String1,String);
YStr=String1+31;
*(String1+43)='\0';
YValue=atof(YStr);
YMaxValue=YValue;
YMinValue=YValue;
YSum=YValue;
fgets(String,2000,InputFile);
while(!feof(InputFile))
{
/* Read Y Value Of Input File */
/* Data Start Third Line */
strcpy(String1,String);
YStr=String1+31;
*(String1+43)='\0';
YValue=atof(YStr);
if(YValue>=YMaxValue) YMaxValue=YValue;
if(YValue<YMinValue) YMinValue=YValue;
YSum+=YValue;
fgets(String,2000,InputFile);
};
MY=YSum/Number;
TempXRMS=0.;
TempX0RMS=0.;
TempYRMS=0.;
TempY0RMS=0.;
fprintf(OutputFile," No X Y X-MX Y-MY X-X0 Y-Y0\n");
rewind(InputFile);
fgets(String,2000,InputFile); /* Fist Line */
fgets(String,2000,InputFile); /* second Line */
fgets(String,2000,InputFile); /* third Line */
Number=1;
fgets(String,2000,InputFile); /* forth line */
while(!feof(InputFile))
{
/* File Format Output , First Read X and Y Value Of Input File */
/* Data Start Third Line */
strcpy(String1,String);
XStr=String1+17;
*(String1+30)='\0';
XValue=atof(XStr);
YStr=String1+31;
*(String1+43)='\0';
YValue=atof(YStr);
DeltX=XValue-MX;
DeltY=YValue-MY;
TempXRMS+=DeltX*DeltX;
TempYRMS+=DeltY*DeltY;
DeltX0=XValue-X0;
DeltY0=YValue-Y0;
TempX0RMS+=DeltX0*DeltX0;
TempY0RMS+=DeltY0*DeltY0;
fprintf(OutputFile,"%4i %12.2f %12.2f %10.2f %10.2f %10.2f %10.2f\n",
Number,XValue,YValue,DeltX,DeltY,DeltX0, DeltY0);
fgets(String,2000,InputFile);
Number++;
};
fprintf(OutputFile,"\n");
fprintf(OutputFile,"AVE %12.2f %12.2f %12.2f%11.2f\n",
MX, MY, MX-X0,MY-Y0);
fprintf(OutputFile,"Max %12.2f %12.2f %10.2f %10.2f %10.2f %10.2f\n",
XMaxValue,YMaxValue,XMaxValue-MX,YMaxValue-MY,XMaxValue-X0,YMaxValue-Y0);
fprintf(OutputFile,"Min %12.2f %12.2f %10.2f %10.2f %10.2f %10.2f\n",
XMinValue,YMinValue,XMinValue-MX,YMinValue-MY,XMinValue-X0,YMinValue-Y0);
XRMSValue=sqrt(TempXRMS/Number);
YRMSValue=sqrt(TempYRMS/Number);
X0RMSValue=sqrt(TempX0RMS/Number);
Y0RMSValue=sqrt(TempY0RMS/Number);
fprintf(OutputFile,"RMS %10.2f %10.2f %10.2f %10.2f\n",
XRMSValue,YRMSValue,X0RMSValue,Y0RMSValue);
fclose(InputFile);
fclose(OutputFile);
return 1;
}
RMS.rar_rms_估计精度_定位精度
版权申诉
127 浏览量
2022-09-23
13:09:58
上传
评论
收藏 1KB RAR 举报
四散
- 粉丝: 54
- 资源: 1万+