電子測(cè)量大作業(yè)_第1頁(yè)
電子測(cè)量大作業(yè)_第2頁(yè)
電子測(cè)量大作業(yè)_第3頁(yè)
電子測(cè)量大作業(yè)_第4頁(yè)
電子測(cè)量大作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上2-21 參考例2-2-6的解題過(guò)程,用C語(yǔ)言或MATLAB設(shè)計(jì)測(cè)量數(shù)據(jù)處理的通用程序,要求如下:(1) 提供測(cè)試數(shù)據(jù)輸入、粗大誤差判別準(zhǔn)則等的人機(jī)界面;(2) 編寫程序使用說(shuō)明;(3) 通過(guò)實(shí)例來(lái)驗(yàn)證程序的正確性。程序如下: #include<math.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #define MAX 50 typedef struct wuli float dMAX; char name50; int LEN; float cc

2、haMAX; /*殘差數(shù)組*/ float avg; /*data的平均值*/ double sx; /*標(biāo)準(zhǔn)偏差Sx*/ wulidata; wulidata *InputData(); void average(wulidata *wl); void YCZhi(wulidata *wl); void CanCha(wulidata *wl); void BZPianCha(wulidata *wl); void output(wulidata *wl); void range(wulidata *wl); /*-*/ void line() int i; printf("n&q

3、uot;); for(i=0;i<74;i+) printf("="); printf("n"); /*-*/ wulidata *InputData() int i=0,k; float da; char Z=0; wulidata *wl; wl=(wulidata *)malloc(sizeof(wulidata); printf("請(qǐng)為你要處理的數(shù)據(jù)組命名:"); scanf("%s",wl->name); printf("n下面請(qǐng)你輸入數(shù)據(jù)%s具體數(shù)值,數(shù)據(jù)不能超過(guò)50個(gè)n"

4、;,wl->name); printf("當(dāng)name='#'時(shí)輸入結(jié)束n"); do printf("%s%d=",wl->name,i+1); scanf("%f",&da); wl->di=da; i+;if(getchar()='#') break; while(wl->di-1!=0.0&&i<MAX); wl->LEN=i-1; do printf("你輸入的數(shù)據(jù)如下:n"); for(i=0;i<wl-&g

5、t;LEN;i+) printf("%s%d=%ft",wl->name,i+1,wl->di); printf("n你是否要作出修改(Y/N)?"); while( getchar()!='n'); Z=getchar(); if( Z='y'|Z='Y') printf("你須要修改哪一個(gè)元素,請(qǐng)輸入其標(biāo)號(hào)i=(1%d)n",wl->LEN); while( getchar()!='n'); scanf("%d",&k);

6、 printf("n%s%d=",wl->name,k); scanf("%f",&(wl->dk-1); else if(Z='n'|Z='N') printf("OK!下面開始計(jì)算。n"); while(Z!='N'&&Z!='n'); return(wl); /*-*/ void average(wulidata *wl) float ad,sum=0; int i; for(i=0;i<wl->LEN;i+) sum

7、=sum+(wl->di); ad=sum/(wl->LEN); wl->avg=ad; /*-*/ void CanCha(wulidata *wl) int i; for(i=0;i<wl->LEN;i+) wl->cchai=(wl->di)-(wl->avg); /*-*/ void YCZhi(wulidata *wl)/*檢查并剔除異常值*/ int i,j; float g,YCZhi; double temp,CCha; printf("下面開始檢查并提出異常值!n"); doprintf("當(dāng)前共有

8、%d個(gè)數(shù),數(shù)據(jù)如下:n",wl->LEN); for(i=0;i<wl->LEN;i+) printf("%s%d=%ft",wl->name,i+1,wl->di); j=-1;CCha=0.0;printf("n請(qǐng)輸入g的值ng=");scanf("%f",&g);for(i=0;i<wl->LEN;i+) temp=fabs(wl->di)-(wl->avg);if(temp>g*(wl->sx)&&(temp>CCha)Y

9、CZhi=wl->di;CCha=temp;j=i;if(j>=0)printf("找到異常值為%s%d=%f,將它剔除。n",wl->name,(j+1),wl->dj);for(i=j;i<wl->LEN-1;i+)wl->di=wl->di+1;wl->LEN-;elseprintf("本次未找到異常數(shù)據(jù),數(shù)據(jù)中異常數(shù)據(jù)已剔除完畢!n"); while(j>=0); printf("當(dāng)前共有%d個(gè)數(shù),數(shù)據(jù)如下:n",wl->LEN); for(i=0;i<w

10、l->LEN;i+) printf("%s%d=%ft",wl->name,i+1,wl->di); /*-*/ void BZPianCha(wulidata *wl)/*標(biāo)準(zhǔn)偏差*/ double sum; int i; sum=0.0; for(i=0;i<wl->LEN;i+) sum=sum+pow(wl->di,2); sum=sum-wl->LEN*pow(wl->avg,2); wl->sx=sqrt(sum/(wl->LEN-1); /*-*/ void leijinxwc(wulidata *w

11、l)/*判斷累進(jìn)性誤差*/ double M,sum1,sum2,temp; int i; sum1=sum2=0.0; temp=wl->ccha0; for (i=1;i<=wl->LEN;i+) if (temp<wl->cchai) temp=wl->cchai; if(wl->LEN%2=0) /*數(shù)據(jù)為偶數(shù)個(gè)時(shí)*/ for(i=0;i<(wl->LEN/2);i+) sum1=sum1+ wl->cchai; for (i=(wl->LEN/2);i<wl->LEN;i+) sum2=sum2+wl-&g

12、t;cchai; M=fabs(sum1-sum2); if(M>temp) printf("存在累進(jìn)性誤差n"); else printf("不存在累進(jìn)性誤差n"); else /*數(shù)據(jù)為奇數(shù)個(gè)時(shí)*/ for(i=0;i<(wl->LEN)-1)/2);i+) sum1=sum1+ wl->cchai; for (i=(wl->LEN)+1)/2;i<wl->LEN;i+) sum2=sum2+wl->cchai; M=fabs(sum1-sum2); if(M>temp) printf("

13、;存在累進(jìn)性誤差n"); else printf("不存在累進(jìn)性誤差n"); /*-*/ void zhouqixwc(wulidata *wl)/*判斷周期性誤差*/ double sum=0; int i; for(i=0;i<wl->LEN-1;i+) sum=sum+(wl->cchai)*(wl->cchai+1); if(fabs(sum)>(sqrt(wl->LEN-1)*pow(wl->sx,2) printf("存在周期性誤差n"); else printf("不存在周期性誤

14、差n"); /*-*/ void range(wulidata *wl)/*給出95%置信區(qū)間*/ double u1,u2,x,ta; printf("n請(qǐng)輸入ta的值nta=");scanf("%f",&ta);ta=2.262;x=(ta)*(wl->sx/sqrt(wl->LEN);u1=wl->avg-x;u2=wl->avg+x;printf("平均值為%.5fn平均值的標(biāo)準(zhǔn)偏差為%.5fn",wl->avg,wl->sx/sqrt(wl->LEN);printf

15、("計(jì)算得到所求數(shù)值的范圍應(yīng)取%.5f%.5f。n",u1,u2); void output(wulidata *wl) int i; printf("n"); line(); printf("你輸入的數(shù)據(jù)如下:n"); for(i=0;i<wl->LEN;i+) printf("%s%d=%ft",wl->name,i+1,wl->di); printf("n"); printf("nt數(shù)據(jù)%s的平均值(A)%s=%f",wl->name,wl->name,wl->avg); line(); printf("數(shù)據(jù)的殘差如下:n"); for(i=0;i<wl->LEN;i+) printf("%s%d=%s%d-(A)%s=%ftt",wl->name,i+1,wl->name,i+1,wl->name,wl->cchai); line(); printf("求得標(biāo)準(zhǔn)偏差Sxn"); printf("Sx=%f",wl->sx); printf(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論