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

下載本文檔

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

文檔簡介

電子測量大作業(yè)姓名學(xué)號班級指導(dǎo)教師

題目一C語言實現(xiàn)測量數(shù)據(jù)誤差處理題2-21:參考例2-2-6的解題過程,用c語言或matlab設(shè)計測量數(shù)據(jù)誤差處理的通用程序,要求如下:(1)提供測試數(shù)據(jù)輸入、粗大誤差判別準(zhǔn)則選擇等的人機(jī)界面;(2)編寫程序使用說明;(3)通過實例來驗證程序的正確性。程序使用說明及實例驗證程序如下:#include<stdio.h>#include<math.h>doubleSUM(doublex[],intn);doubleAVRG(doublex[],intn);doubleSD(doublex[],intn);intPauTa(doublex[],intn);intChauvenet(doublex[],intn);intGrubbs_1(doublex[],intn);intGrubbs_2(doublex[],intn);staticintn;staticdoublea[500];intmain(){ inti,choose,leap=1; doubleavg,sd,v[500],M=0,AH=0,vmax=0; doubleP,PX[]={12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262,2.228,2.131,2.086,2.060,2.042,2.021,2.000,1.980,1.960}; printf("請輸入數(shù)據(jù)總個數(shù):\n"); scanf("%d",&n); printf("請輸入數(shù)據(jù):\n"); for(i=0;i<n;i++)scanf("%lf",&a[i]); avg=AVRG(a,n); sd=SD(a,n); printf("\n輸入數(shù)據(jù)的平均值為%lf,標(biāo)準(zhǔn)差為%lf\n",avg,sd); while(leap) { printf("請選擇粗大誤差的檢驗法:\n1.萊特檢驗法\n2.肖維納檢驗法\n3.格拉布斯檢驗法(置信概率99%%)\n4.格拉布斯檢驗法(置信概率95%%)\n5.停止檢驗\n"); scanf("%d",&choose); if(choose==1&&n<10)printf("數(shù)據(jù)總量小于10,不能使用萊特檢驗法。\n"); elseif(choose==2&&n<5)printf("數(shù)據(jù)總量小于5,不能使用肖維納檢驗法。\n"); elseswitch(choose) { case1:leap=PauTa(a,n);break; case2:leap=Chauvenet(a,n);break; case3:leap=Grubbs_1(a,n);break; case4:leap=Grubbs_2(a,n);break; case5:leap=0;break; default:printf("輸入錯誤,請重新選擇\n");break; } } avg=AVRG(a,n); sd=SD(a,n); for(i=0;i<n;i++) { v[i]=a[i]-avg; if(vmax*vmax<=v[i]*v[i])vmax=v[i]; } printf("粗大誤差剔除完畢,剩余數(shù)據(jù)如下(括號內(nèi)為殘差):\n"); for(i=0;i<n;i++)printf("%f(%f)",a[i],v[i]); printf("平均值為%lf,標(biāo)準(zhǔn)差為%lf\n",avg,sd); for(i=0;i<n/2;i++)M+=v[i]; for(i=(n+1)/2;i<n;i++)M-=v[i]; M=sqrt(M*M); vmax=sqrt(vmax*vmax); if(M>=vmax)printf("\n根據(jù)馬利科夫判據(jù),存在累進(jìn)性系統(tǒng)誤差。\n"); elseprintf("\n根據(jù)馬利科夫判據(jù),不存在累進(jìn)性系統(tǒng)誤差。\n"); for(i=0;i<n-1;i++)AH+=v[i]*v[i+1]; if((AH*AH)>=((n-1)*sd*sd*sd*sd))printf("\n根據(jù)阿卑-赫梅特準(zhǔn)則,存在周期性系統(tǒng)誤差。\n"); elseprintf("\n根據(jù)阿卑-赫梅特準(zhǔn)則,不存在周期性系統(tǒng)誤差。\n"); if(n>120)P=PX[17]; elseif(n>60)P=PX[16]; elseif(n>40)P=PX[15]; elseif(n>30)P=PX[14]; elseif(n>25)P=PX[13]; elseif(n>20)P=PX[12]; elseif(n>15)P=PX[11]; elseif(n>10)P=PX[10]; elseP=PX[n-1]; printf("\n該組數(shù)組的置信區(qū)間為[%lf,%lf](置信概率為95%%)\n",(avg-P*sd),(avg+P*sd)); return0;}doubleSUM(doublex[],intn){ doubles=0; inti; for(i=0;i<n;i++)s+=x[i]; returns;}doubleAVRG(doublex[],intn){ doubleaver=0; aver=SUM(x,n)/n; returnaver;}doubleSD(doublex[],intn){ doubleaver,sd,SUM=0; inti; aver=AVRG(x,n); for(i=0;i<=n;i++)SUM+=x[i]*x[i]; sd=sqrt((SUM-n*aver*aver)/(n-1)); returnsd;}intPauTa(doublex[],intn){ inti,j=0,leap; doublev[500],temp=0,aver,sd; aver=AVRG(x,n); sd=SD(x,n); for(i=0;i<n;i++)v[i]=x[i]-aver; for(i=0;i<n;i++) { if((v[i]*v[i]>=9*sd*sd)&&(v[i]*v[i]>temp*temp)) { temp=v[i]; j=i+1; } } if(j) { for(i=j-1;i<n-1;i++)x[i]=x[i+1]; n--; printf("根據(jù)萊特檢驗法,本次剔除的數(shù)據(jù)為%lf\n%d",x[j-1],n); leap=1; } else { printf("依據(jù)萊特檢驗法,沒有要剔除的數(shù)據(jù)\n"); leap=0; } returnleap;}intChauvenet(doublex[],intn){ inti,j=0,leap; doublev[500],temp=0,ch,aver,sd; doublechx[]={0,0,0,0,1.65,1.73,1.79,1.86,1.92,2.00,2.04,2.07,2.10,2.13,2.16,2.18,2.20,2.22,2.24,2.26,2.28,2.30,2.32,2.33,2.34,2.35,2.37,2.38,2.39,2.45,2.50,2.58,2.64,2.74,2.81,3.02}; if(n>36)ch=chx[36]; elsech=chx[n-1]; aver=AVRG(x,n); sd=SD(x,n); for(i=0;i<n;i++)v[i]=x[i]-aver; for(i=0;i<n;i++) { if((v[i]*v[i])>=(ch*ch*sd*sd)&&(v[i]*v[i])>=(temp*temp)) { j=i+1; temp=v[i]; } } if(j) { printf("依據(jù)肖維納檢驗法,本次剔除了第%d個數(shù)據(jù)%lf\n",j,x[j-1]); for(i=j-1;i<n-1;i++)x[i]=x[i+1]; leap=1; n--; } else { printf("依據(jù)肖維納檢驗法,沒有要剔除的數(shù)據(jù)\n"); leap=0; } returnleap;}intGrubbs_1(doublex[],intn){ inti,max=0,min=0,leap; doublev[500],temp=0,g,sd,aver; doublegx[30]={0,0,1.15,1.46,1.67,1.82,1.94,2.03,2.11,2.18,2.23,2.29,2.33,2.37,2.41,2.44,2.47,2.50,2.53,2.56,2.58,2.60,2.62,2.64,2.66,2.74,2.81,2.87,2.96,3.17}; if(n>=100)g=gx[29]; elseif(n>=50)g=gx[28]; elseif(n>=40)g=gx[27]; elseif(n>=35)g=gx[26]; elseif(n>=30)g=gx[25]; elseif(n>=25)g=gx[24]; elseg=gx[n-1]; aver=AVRG(x,n); sd=SD(x,n); for(i=0;i<n;i++) { v[i]=x[i]-aver; if(x[min]>x[i])min=i; if(max<x[i])max=i; } if(v[max]*v[max]<v[min]*v[min])max=min; if(v[max]*v[max]>g*g*sd*sd) { printf("根據(jù)格拉布斯檢驗法,本次剔除了第%d個數(shù)據(jù)%lf(置信概率99%%)\n",max,x[max]); for(i=max;i<n-1;i++)x[i]=x[i+1]; leap=1; n--; } else { printf("根據(jù)格拉布斯檢驗法,沒有要剔除的數(shù)據(jù)\n"); leap=0; } returnleap;}intGrubbs_2(doublex[],intn){ inti,max=0,min=0,leap; doublev[500],temp=0,g,sd,aver; doublegx[30]={0,0,1.16,1.49,1.75,1.94,2.10,2.22,2.32,2.41,2.48,2.55,2.61,2.66,2.71,2.75,2.79,2.82,2.85,2.88,2.91,2.94,2.96,2.99,3.01,3.10,3.18,3.24,3.34,3.58}; if(n>=100)g=gx[29]; elseif(n>=50)g=gx[28]; elseif(n>=40)g=gx[27]; elseif(n>=35)g=gx[26]; elseif(n>=30)g=gx[25]; elseif(n>=25)g=gx[24]; elseg=gx[n-1]; aver=AVRG(x,n); sd=SD(x,n); for(i=0;i<n;i++) { v[i]=x[i]-aver; if(x[min]>x[i])min=i; if(max<x[i])max=i; } if(v[max]*v[max]<v[min]*v[min])max=min; if(v[max]*v[max]>g*g*sd*sd) { printf("根據(jù)格拉布斯檢驗法,本次剔除了第%d個數(shù)據(jù)%lf(置信概率95%%)\n",max,x[max]); for(i=max;i<n-1;i++)x[i]=x[i+1]; leap=1; n--; } else { printf("根據(jù)格拉布斯檢驗法,沒有要剔除的數(shù)據(jù)\n"); leap=0; } returnleap;}一、初始菜單界面及數(shù)據(jù)輸入界面根據(jù)指令輸入采集數(shù)據(jù),這里使用例2-2-6驗證程序。輸入例2-2-6數(shù)據(jù)后,界面顯示存儲的數(shù)據(jù)供用戶檢驗。通過選擇相應(yīng)的菜單序列號實現(xiàn)相應(yīng)的功能。下面調(diào)用功能1求均值。求均值結(jié)果正確,再輸入1返回住菜單并輸入2求標(biāo)準(zhǔn)差估計值。結(jié)果正確,再輸入1返回主菜單并輸入3判斷有無粗大誤差。根據(jù)提示選擇相應(yīng)的檢測法,這里使用格拉布斯準(zhǔn)則判斷,結(jié)果如下。結(jié)果正確,輸入1返回主菜單,并輸入1重新輸入數(shù)據(jù),這次輸入數(shù)據(jù)剔除上次含有粗大誤差數(shù)據(jù)。繼續(xù)輸入3指令判斷有無粗大誤差,依舊采用格拉布斯準(zhǔn)則。判斷有無系統(tǒng)誤差,返回主菜單后輸入指令4,結(jié)果如下:返回主菜單計算置信區(qū)間,結(jié)果如下。計算結(jié)果正確。題目二觸發(fā)電路對示波器波形的影響6-13.在Multisim環(huán)境下,利用Agilent54622D虛擬示波器,通過仿真實驗來說明觸發(fā)電平、觸發(fā)極性、觸發(fā)耦合方式對波形顯示的影響。實驗準(zhǔn)備:在電子仿真軟件Multisim10中掉相互信號發(fā)生器和虛擬示波器,并按如圖連接好電路:一:觸發(fā)電平對波形顯示的影響:操作過程:觸發(fā)電平可以由觸發(fā)電平旋鈕調(diào)節(jié),它有正電平、負(fù)電平和零點平之分,相應(yīng)的出發(fā)點分別位于觸發(fā)信號電壓波形上部、下部和中部。操作:首先連接好信號發(fā)生器與虛擬示波器,設(shè)置好信號源的頻率,接通示波器電源,調(diào)節(jié)使波形穩(wěn)定,再調(diào)節(jié)觸發(fā)電平旋鈕,分別使之位于正電平、負(fù)電平和零點平位置,記錄波形。調(diào)節(jié)界面如下:Level是觸發(fā)電平旋鈕。2.實驗結(jié)果(出發(fā)點已在圖上標(biāo)出)正電平負(fù)電平零電平二:觸發(fā)極性對波形顯示的影響:操作過程觸發(fā)極性指的是觸發(fā)點位于觸發(fā)信號的上升沿還是下降沿,位于上升沿的稱為正極性觸發(fā),位于下降沿的稱為負(fù)極性觸發(fā)。觸發(fā)極性的選擇有觸發(fā)極性(SLOPE)選擇開關(guān)來實現(xiàn)。操作:首先連接好信號發(fā)生器和虛擬示波器,設(shè)置好信號源的頻率,接通電源,調(diào)節(jié)使波形穩(wěn)定,再調(diào)節(jié)觸發(fā)極性開關(guān),分別使之位于正極性觸發(fā)、負(fù)極性觸發(fā)位置,記錄波形。操作界面如下:實驗結(jié)果:正極性觸發(fā):負(fù)極性觸發(fā):三、觸發(fā)耦合方式對波形顯示的影響:1.操作過程:觸發(fā)信號的耦合方式是指選擇觸發(fā)源中哪個成分來產(chǎn)生觸發(fā)脈沖,分為DC、AC、AC(H)、HF四種方式。DC即直流耦合,觸發(fā)信號中既包含直流成分也包含交流成分。AC隔直流,適合交流信號的觸發(fā)。AC(H)為低頻抑制耦合,抵制低頻信號的干擾。HF為高頻耦合,適于觀測5MHZ以上的信號。操作:首先連接好信號發(fā)生器與虛擬示波器,設(shè)置好信號源的頻率,接通電源,調(diào)節(jié)是波形穩(wěn)定,再點擊“ModeCoupling”按鈕,分別調(diào)節(jié)為四種耦合方式。操作界面如下:耦合模式選擇:由上邊截圖可看到,耦合方式并不是預(yù)期的四種,而是由Auto、Normal、Auto-level三種耦合方式代替。為了弄明白原因,我在實驗室重新做了這個實驗,發(fā)現(xiàn)實驗室的示波器的耦合方式正是我們所要的四種耦合方式,因此,仿真實驗和真實的實驗還是有一定的區(qū)別的。四.總結(jié)與感受:雖然是仿真實驗,但還是遇到了一些麻煩。由于對示波器的不了解,實驗過程比較坎坷,步步受阻,實驗很難繼續(xù)下去。不過在學(xué)習(xí)了模擬示波器的使用方法之后,實驗還算是比較順利的做完了。但是在做耦合方式對波形的影響時,并沒有四種耦合方式可以選擇,而是Auto,所以沒有能夠比較出來不同耦合方式對示波器波形的影響??傊?,通過本次仿真實驗,有了很多收獲,更加鞏固了理論知識。題目三時域反射計6-14在Multisim環(huán)境下,基于TektronixTDS204虛擬示波器設(shè)計一種時域反射計,給出電路原理圖和實驗仿真結(jié)果。(本

溫馨提示

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

評論

0/150

提交評論