版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...遙感影像監(jiān)視分類與非監(jiān)視分類摘要:遙感影像的分類方法按照是否有先驗類別可分為監(jiān)視分類和非監(jiān)視分類,這兩種分類方法有著本質(zhì)的區(qū)別但也有存在一定的聯(lián)系。本文從分類原理和分類方法等不同角度分別介紹了監(jiān)視分類和非監(jiān)視分類方法,并對兩種方法的分類結果進展了比照和分析。關鍵詞:遙感;監(jiān)視分類;非監(jiān)視分類;ISODATA算法;貝葉斯分類算法。數(shù)據(jù)來源本文使用的數(shù)據(jù)是華盛頓廣場上空由衛(wèi)星拍攝的高光譜遙感影像。該幅影像使用的傳感器系統(tǒng)覆蓋0.4到2.4m的可見光到近紅外的210個波段。由于0.9-1.4米光譜對應的區(qū)域上空大氣透光性很差,因此將這個區(qū)域內(nèi)的波段從影像中刪除,最后得到191個波段。該數(shù)據(jù)集有1208個掃描行,每行307個像元,容量近似150MB。為了清晰地反映影像中地物的特征,本文從191個波段中選擇了3個波段,分別是120、140和160。下面兩幅圖分別是全波段影像和三波段影像:圖1全波段影像圖2三波段影像遙感影像的監(jiān)視分類2.1監(jiān)視分類的原理監(jiān)視分類〔supervisedclassification〕又稱訓練場地法,是以建立統(tǒng)計識別函數(shù)為理論基礎,依據(jù)典型樣本訓練方法進展分類的技術。即根據(jù)訓練區(qū)提供的樣本,通過選擇特征參數(shù),求出特征參數(shù)作為決策規(guī)則,建立判別函數(shù)以對各待分類影像進展的圖像分類,是模式識別的一種方法。要求訓練區(qū)域具有典型性和代表性。判別準則假設滿足分類精度要求,則此準則成立;反之,需重新建立分類的決策規(guī)則,直至滿足分類精度要求為止。常用算法有:最大釋然分類法、最小距離分類法、馬氏距離分類法、平行六面體分類法、K-NN分類法。本文選用最大釋然分類法對遙感影像進展監(jiān)視分類。最大似然判別法.也稱為貝葉斯(Bayes)分類,是基于圖像統(tǒng)計的監(jiān)視分類法,也是典型的和應用最廣的監(jiān)視分類方法.它建立在Bayes準則的基礎上,偏重于集群分布的統(tǒng)計特性,分類原理是假定訓練樣本數(shù)據(jù)在光譜空間的分布是服從高斯正態(tài)分布規(guī)律的,做出樣本的概率密度等值線,確定分類,然后通過計算標本(像元)屬于各組(類)的概率,將標本歸屬于概率最大的一組.用最大似然法分類,具體分為三步:首先確定各類的訓練樣本,再根據(jù)訓練樣本計算各類的統(tǒng)計特征值,建立分類判別函數(shù),最后逐點掃描影像各像元,將像元特征向量代入判別函數(shù),求出其屬于各類的概率,將待判斷像元歸屬于最大判別函數(shù)值的一組。2.2最大釋然分類算法的調(diào)試#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<math.h>#include<iomanip.h>constfloatPI=3.1415;floattrain1[60][3],train2[60][3],train3[60][3],train4[60][3];//存各類訓練樣本floatm1[3],m2[3],m3[3],m4[3],c1[3][3],c2[3][3],c3[3][3],c4[3][3];//各類均值向量及協(xié)方差矩陣floatp=0.25;//先驗概率floattest[240][11];//檢驗樣本各列分別存放:分類前類別,行號,列號,一波段灰度,二波段灰度,三波段灰度,分類后類別floata1,a2,a3,a4;//公式中常數(shù)項;floatqq,qq1,qq2,qq3,qq4;//分類精度floatk;//kappa值intq[4][4];//混淆矩陣floata[4][4];//精度指標矩陣各列分別為生產(chǎn)者精度漏分誤差//用戶精度錯分誤差intmain(){ voidgetdata1(char*filename); voidgetdata2(char*filename);voidcompute(floattrain[60][3],floatm[3],floatc[3][3],float*a); floatidentify(floatm[3],floatc[3][3],floata,floatband1,floatband2,floatband3); intclassify(floatp1,floatp2,floatp3,floatp4);voidtesting(); voidaccuracy(floatp[4][4]); voidoutput(char*filename); voidoutput1(char*filename); getdata1("05training.txt");//存放的是訓練樣本三個波段的灰度值 getdata2("05testing.txt");//檢驗樣本行號列號類別代碼三個波段的灰度值compute(train1,m1,c1,&a1);//計算各類均值向量及協(xié)方差矩陣 compute(train2,m2,c2,&a2); compute(train3,m3,c3,&a3); compute(train4,m4,c4,&a4);testing();//對檢驗樣本分類 accuracy(a); output("05test-result.txt"); output1("05confusion-matrix.txt"); return0;}voidgetdata1(char*filename){ ifstreaminfile(filename,ios::in|ios::nocreate);//把每類樣本的灰度值依次存入對應的數(shù)組if(infile==0) {cout<<"openinfileerror!"<<endl; exit(1); }inti,j; for(i=0;i<60;i++) for(j=0;j<3;j++) infile>>train1[i][j];for(i=0;i<60;i++) for(j=0;j<3;j++) infile>>train2[i][j];for(i=0;i<60;i++) for(j=0;j<3;j++) infile>>train3[i][j];for(i=0;i<60;i++) for(j=0;j<3;j++) infile>>train4[i][j]; infile.close();}voidgetdata2(char*filename){ ifstreaminfile(filename,ios::in|ios::nocreate);if(infile==0) { cout<<"openinfileerror!"<<endl; exit(1); }inti,j; for(i=0;i<240;i++)//檢驗樣本的數(shù)量為240 for(j=0;j<6;j++)//行、列號、類別代碼、三個波段灰度值 infile>>test[i][j];infile.close();}voidcompute(floattrain[60][3],floatm[3],floatc[3][3],float*a){ voidgauss(intf,floatn[3][3]);//求n矩陣的逆陣聲明 inti,j;for(i=0;i<3;i++)m[i]=0; for(i=0;i<3;i++) { for(j=0;j<60;j++) m[i]+=train[j][i]; m[i]=m[i]/60; }floatTrain[3][60];//轉置矩陣 for(i=0;i<3;i++) for(j=0;j<60;j++) Train[i][j]=train[j][i]; intk; for(i=0;i<3;i++)//求協(xié)方差 for(j=0;j<3;j++) {c[i][j]=0;for(k=0;k<60;k++) c[i][j]+=((Train[i][k]-m[i])*(train[k][j]-m[j])); c[i][j]=c[i][j]/60; } *a=c[0][0]*c[1][1]*c[2][2]+c[0][1]*c[1][2]*c[2][0]+c[0][2]*c[1][0]*c[2][1] -c[0][2]*c[1][1]*c[2][0]-c[0][0]*c[1][2]*c[2][1]-c[0][1]*c[1][0]*c[2][2]; *a=(-0.5)*log(*a)+log(p)-25*log(2*PI);gauss(3,c); }floatidentify(floatm[3],floatc[3][3],floata,floatband1,floatband2,floatband3){//計算待分樣本的d(X) floatx[3];x[0]=band1;x[1]=band2;x[2]=band3;inti,j; for(i=0;i<3;i++) x[i]-=m[i];floatd[3]; for(i=0;i<3;i++) {d[i]=0; for(j=0;j<3;j++) d[i]+=(x[i]*c[j][i]); } doubleq=0; for(i=0;i<3;i++)q+=x[i]*d[i]; q=(-0.5)*q+a; q=exp(q); returnq;}intclassify(floatp1,floatp2,floatp3,floatp4)//根據(jù)后驗概率將像元歸為指定類別{floatp[4];p[0]=p1;p[1]=p2;p[2]=p3;p[3]=p4;inti,k=0;floatmax=p[0];for(i=1;i<4;i++)if(max<p[i]) {max=p[i]; k=i; }k++;returnk;}voidtesting(){ doublep1,p2,p3,p4,p5,p6,p7; floatkappa(intk[4][4]);inti,j; for(i=0;i<240;i++) { p1=identify(m1,c1,a1,test[i][3],test[i][4],test[i][5]);p2=identify(m2,c2,a2,test[i][3],test[i][4],test[i][5]); p3=identify(m3,c3,a3,test[i][3],test[i][4],test[i][5]);p4=identify(m4,c4,a4,test[i][3],test[i][4],test[i][5]);p5=identify(m5,c5,a5,test[i][3],test[i][4],test[i][5]);p6=identify(m6,c6,a6,test[i][3],test[i][4],test[i][5]);p7=identify(m7,c7,a7,test[i][3],test[i][4],test[i][5]); doubledx=p1+p2+p3+p4+p5+p6+p7; p1=p1/dx;p2=p2/dx; p3=p3/dx;p4=p4/dx;p5=p5/dx;p6=p6/dx;p7=p7/dx; test[i][7]=p1; test[i][8]=p2; test[i][9]=p3; test[i][10]=p4;test[i][11]=p5;test[i][12]=p6;test[i][113]=p7; test[i][6]=classify(p1,p2,p3,p4,p5,p6,p7); //cout<<setiosflags(ios::fixed)<<setprecision(3)<<p1<<""<<p2<<""<<p3<<""<<p4<<""<<p5<<""<<p6<<""<<p7<<endl; } for(i=0;i<7;i++) for(j=0;j<7;j++) q[i][j]=0;for(i=0;i<60;i++)//混淆矩陣中的各類別組合數(shù)量 { if(test[i][2]==1&&test[i][6]==1)q[0][0]++; if(test[i][2]==1&&test[i][6]==2)q[0][1]++; if(test[i][2]==1&&test[i][6]==3)q[0][2]++; if(test[i][2]==1&&test[i][6]==4)q[0][3]++;if(test[i][2]==1&&test[i][6]==4)q[0][4]++;if(test[i][2]==1&&test[i][6]==4)q[0][5]++;if(test[i][2]==1&&test[i][6]==4)q[0][6]++; }for(i=60;i<120;i++) { if(test[i][2]==2&&test[i][6]==1)q[1][0]++; if(test[i][2]==2&&test[i][6]==2)q[1][1]++; if(test[i][2]==2&&test[i][6]==3)q[1][2]++; if(test[i][2]==2&&test[i][6]==4)q[1][3]++;if(test[i][2]==2&&test[i][6]==4)q[1][4]++;if(test[i][2]==2&&test[i][6]==4)q[1][5]++;if(test[i][2]==2&&test[i][6]==4)q[1][6]++; } for(i=120;i<180;i++) { if(test[i][2]==3&&test[i][6]==1)q[2][0]++; if(test[i][2]==3&&test[i][6]==2)q[2][1]++; if(test[i][2]==3&&test[i][6]==3)q[2][2]++; if(test[i][2]==3&&test[i][6]==4)q[2][3]++;if(test[i][2]==3&&test[i][6]==4)q[2][4]++;if(test[i][2]==3&&test[i][6]==4)q[2][5]++;if(test[i][2]==3&&test[i][6]==4)q[2][6]++; } for(i=180;i<240;i++) { if(test[i][2]==4&&test[i][6]==1)q[3][0]++; if(test[i][2]==4&&test[i][6]==2)q[3][1]++; if(test[i][2]==4&&test[i][6]==3)q[3][2]++; if(test[i][2]==4&&test[i][6]==4)q[3][3]++;if(test[i][2]==3&&test[i][6]==4)q[3][4]++;if(test[i][2]==3&&test[i][6]==4)q[3][5]++;if(test[i][2]==3&&test[i][6]==4)q[3][6]++;}qq1=(float)q[0][0]/60.0;qq2=(float)q[1][1]/60.0;qq3=(float)q[2][2]/60.0;qq4=(float)q[3][3]/60.0;qq5=(float)q[4][3]/60.0;qq6=(float)q[5][3]/60.0;qq7=(float)q[6][3]/60.0;qq=(qq1+qq2+qq3+qq4+qq5+qq6+qq7)/4; qq=qq*100;k=kappa(q);// cout<<"1代表'房頂',2代表'街道',3代表'小路',4代表'草地',5代表'樹木',6代表'水體',7代表'陰影'"<<endl;// cout<<"正確分類百分比分別為:";//cout<<qq1<<""<<qq2<<""<<qq3<<""<<qq4<<""<<qq5<<""<<qq6<<""<<qq7<<endl;//cout<<"總分類精度:"<<setprecision(2)<<qq<<"%"<<endl;// cout<<"Kappa值為:"<<setprecision(2)<<k<<"%"<<endl;}voidoutput(char*filename){ofstreamoutfile(filename,ios::out);if(outfile==0){cout<<"openoutfileerror!"<<endl;exit(1);}outfile<<"1代表'房頂',2代表'街道',3代表'小路',4代表'草地',5代表'樹木',6代表'水體',7代表'陰影'"<<endl;outfile<<"正確分類百分比分別為:";outfile<<setprecision(3)<<qq1<<""<<qq2<<""<<qq3<<""<<qq4<<endl;outfile<<"總分類精度:"<<setprecision(4)<<qq<<"%"<<endl;outfile<<"row"<<"col"<<"before"<<"after"<<"proba1"<<"proba2"<<"proba3"<<"proba4"<<endl;inti;for(i=0;i<240;i++){ outfile<<setiosflags(ios::fixed)<<setprecision(0)<<test[i][0]<<""<<test[i][1]<<""<<test[i][2]<<""<<test[i][6]<<"";outfile<<setiosflags(ios::fixed)<<setprecision(3)<<test[i][7]<<""<<test[i][8]<<""<<test[i][9]<<""<<test[i][10]<<endl;} outfile.close();}voidgauss(intf,floatn[3][3]){inti,j,k;floatp,q,h[3];for(k=f-1;k>=0;k--) {p=n[0][0];for(i=1;i<f;i++) {q=n[i][0]; h[i]=((i>k)?q:-q)/p; for(j=1;j<=i;j++) n[i-1][j-1]=n[i][j]+q*h[j];}n[f-1][f-1]=1/p;for(i=1;i<f;i++) n[f-1][i-1]=h[i]; }for(i=1;i<f;i++)for(j=0;j<i;j++)n[j][i]=n[i][j];}floatkappa(intk[4][4]){ inti,j; floatK; intc[4],d[4];intN=0,M=0,D=0; for(i=0;i<4;i++) { c[i]=0; d[i]=0; } for(i=0;i<4;i++) for(j=0;j<4;j++) { N+=k[i][j]; if(i==j)D=D+k[i][j]; c[i]=k[i][j]+c[i]; d[j]=k[i][j]+d[j]; } for(i=0;i<4;i++) M=c[i]*d[i]+M; K=float((N*D-M))/(N*N-M); returnK;}voidaccuracy(floatp[4][4]){ inta[4],b[4]; floata1[4],a2[4],b1[4],b2[4]; inti,j; for(i=0;i<4;i++) { a[i]=0;b[i]=0; a1[i]=0;b1[i]=0; a2[i]=0;b2[i]=0; } for(i=0;i<4;i++) for(j=0;j<4;j++) { p[i][j]=0; a[i]+=q[i][j]; b[i]+=q[j][i]; } for(i=0;i<4;i++) { a1[i]=(float)q[i][i]/a[i]; a2[i]=1-a1[i]; b1[i]=(float)q[i][i]/b[i]; b2[i]=1-b1[i]; }for(i=0;i<4;i++) { p[i][0]=a1[i]*100;//生產(chǎn)者精度 p[i][1]=a2[i]*100;//漏分誤差 p[i][2]=b1[i]*100;//用戶精度 p[i][3]=b2[i]*100;//錯分誤差 }}voidoutput1(char*filename){ ofstreamoutfile(filename,ios::out);if(outfile==0){cout<<"openoutfileerror!"<<endl;exit(1);}outfile<<"Lakes"<<"Built-upLand"<<"ForestLand"<<"Cropland"<<endl;inti,j;for(i=0;i<4;i++){ switch(i) { case0: outfile<<"Lakes";break; case1: outfile<<"Built-upLand";break; case2: outfile<<"ForestLand";break; case3: outfile<<"Cropland";break; } for(j=0;j<4;j++) { outfile<<setiosflags(ios::left)<<setw(7)<<q[i][j]<<""; if(j!=0&&j%3==0)outfile<<endl; } }outfile<<endl;outfile<<endl;outfile<<endl;outfile<<""<<setw(11)<<"Producer's"<<setw(11)<<"Omission"<<"User's"<<"Commision"<<endl; for(i=0;i<4;i++) { switch(i) { case0: outfile<<"Lakes";break; case1: outfile<<"Built-upLand";break; case2: outfile<<"ForestLand";break; case3: outfile<<"Cropland";break; } for(j=0;j<4;j++) { outfile<<""<<setiosflags(ios::fixed)<<setprecision(2)<<setw(4)<<a[i][j]<<"%"<<""; if(j!=0&&j%3==0)outfile<<endl; } } outfile<<endl; outfile<<endl; outfile<<""<<"總分類精度:"<<setprecision(2)<<qq<<"%"<<endl; outfile<<""<<"Kappa系數(shù):"<<setprecision(3)<<k<<endl; outfile.close();}2.3最大釋然分類算法的執(zhí)行在貝葉斯分類器中執(zhí)行以上代碼,得到的監(jiān)視分類圖如下所示:圖三監(jiān)視分類圖利用最大釋然分類算法對遙感影像進展監(jiān)視分類,最后將圖像上的地類分為7類,分別是:房頂,街道,小路,草地,樹木,水體和陰影。從處理的圖像來看,分類結果較為很理想,基本上可以識別出這7類地物。非監(jiān)視分類非監(jiān)視分類的原理非監(jiān)視分類是以不同影像地物在特征空間中類別特征的差異為依據(jù)的一種無先驗〔〕類別標準的圖像分類,是以集群為理論基礎,通過計算機對圖像進展集聚統(tǒng)計分析的方法。根據(jù)待分類樣本特征參數(shù)的統(tǒng)計特征,建立決策規(guī)則來進展分類。而不需事先知道類別特征。把各樣本的空間分布按其相似性分割或合并成一群集,每一群集代表的地物類別,需經(jīng)實地調(diào)查或與類型的地物加以比較才能確定。常用的非監(jiān)視分類算法有:K-均值〔K-Means〕算法和迭代自組織數(shù)據(jù)分析技術〔ISODATA〕。本文使用ISODATA算法對遙感影像進展非監(jiān)視分類。ISODATA是一種模糊迭代自組織數(shù)據(jù)分析算法,采用樣本修正法調(diào)整樣本所屬類別來完成樣本的聚類分析。它是一種非監(jiān)視分類方法,可以自動的分類合并到達合理的分類數(shù),兼顧了各空間實體之間相關信息,各個區(qū)域中特征的非均勻性可包含在初始圖像分割處理中,且可以形成原始圖像的特征空間,而不會像硬分割那樣產(chǎn)生偏倚。ISODATA算法的調(diào)試#include"stdafx.h"#include"stdio.h"#include"math.h"#defineN10#defineeps0.00001structPointf{ intsequence; floatx; floaty;};structPointZ{ floatx; floaty;};floatCalDistancef(Pointfx1,Pointfx2){ returnsqrtf((x1.x-x2.x)*(x1.x-x2.x)+(x1.y-x2.y)*(x1.y-x2.y));}floatCalDistanceZ(PointZx1,PointZx2){ returnsqrtf((x1.x-x2.x)*(x1.x-x2.x)+(x1.y-x2.y)*(x1.y-x2.y));}floatCalDistancefZ(Pointfx1,PointZx2){ returnsqrtf((x1.x-x2.x)*(x1.x-x2.x)+(x1.y-x2.y)*(x1.y-x2.y));}intmain(intargc,char*argv[]){ Pointfpts[N]={ {0,0.0,0.0},{1,3.0,8.0},{2,2.0,2.0},{3,1.0,1.0},{4,5.0,3.0}, {5,4.0,8.0},{6,6.0,3.0},{7,5.0,4.0},{8,6.0,4.0},{9,7.0,5.0}, }; inti,j,m; printf("樣本集為:\n"); for(i=0;i<N;i++) { printf("X%d(%.1f,%.1f)",i,pts[i].x,pts[i].y); if((i+1)%5==0) { printf("\n"); } } printf("\n"); printf("\n"); intNc=0; printf("pleaseinputNc(0-10):"); scanf("%d",&Nc); intZ[N]; for(i=0;i<Nc;i++) { printf("輸入初始第%d聚類中心的序號(0-9):",i); scanf("%d",&Z[i]); }intNj[N];//記錄每個類中元素的個數(shù) PointZZArray[N]; PointfSAArray[N][N]; floatDjAv[N]; floatDeltaj[N][2]; floatDeltajmax[N]; intDeltajmaxCor[N]; floatDAv; intNreal=N; intcount=0; floatDij[N*N/2]; intDiji[N]; intDijj[N]; intq=0; intp=0;floatft; intit; intjt; intflag; intss=0; PointZZtp; PointZZArraytp[N]; intNctp; charch; intcur=0; for(i=0;i<N;i++) { Nj[i]=0; } //聚類中心的特征值 for(i=0;i<Nc;i++) { intihere=Z[i]; ZArray[i].x=pts[ihere].x; ZArray[i].y=pts[ihere].y; } intK,ThetaN; floatThetaS,ThetaC; intL,I;Step1: printf("輸入預期聚類中心數(shù)目K:"); scanf("%d",&K); printf("輸入每個聚類域中最少的樣本數(shù)ThetaN:"); scanf("%d",&ThetaN); printf("輸入同一聚類域中樣本標準差的最大值:"); scanf("%f",&ThetaS); printf("輸入不同聚類域距離最小值:"); scanf("%f",&ThetaC); printf("輸入一次可以合并的聚類中心的最多對數(shù):"); scanf("%d",&L); printf("輸入最大迭代次數(shù):"); scanf("%d",&I);Step2: for(i=0;i<Nc;i++) { Nj[i]=0; } printf("\n"); printf("這是第%d次歸類\n",count+1); for(i=0;i<N;i++)//將模式樣本歸類 { if(pts[i].sequence==-1)continue;//假設該點的序號為-1則說明它是被剔除的 floatdis=1.0e+10; intxx=0; floatftemp; for(j=0;j<Nc;j++) { ftemp=CalDistancefZ(pts[i],ZArray[j]); if(ftemp<dis||fabs(dis-ftemp)<eps) { xx=j; dis=ftemp; } } SAArray[xx][Nj[xx]].x=pts[i].x; SAArray[xx][Nj[xx]].y=pts[i].y; SAArray[xx][Nj[xx]].sequence=pts[i].sequence; Nj[xx]=Nj[xx]+1; } for(i=0;i<Nc;i++) { printf("第%d個聚類中心是:(%.2f,%.2f)",i,ZArray[i].x,ZArray[i].y); printf("包含的元素有:",i); for(j=0;j<Nj[i];j++) { printf("X%d",SAArray[i][j].sequence); } printf("\n"); //printf("Nj(%d)is%d\n",i,Nj[i]); } count++;Step3: for(j=0;j<Nc;j++)//是否可以去掉一些數(shù)據(jù) { if(Nj[j]<ThetaN) { for(i=0;i<Nj[j];i++) { pts[SAArray[j][i].sequence].sequence=-1; } i=j; inttr=j; Nreal-=Nj[j]; while(j<Nc-1) { for(m=0;m<Nj[j+1];m++) { SAArray[j][m].x=SAArray[j+1][m].x; SAArray[j][m].y=SAArray[j+1][m].y; SAArray[j][m].sequence=SAArray[j+1][m].sequence; } j++; } while(i<Nc-1) { Nj[i]=Nj[i+1]; i++; } Nc--; j=tr; } }Step4://修正各聚類中心 for(j=0;j<Nc;j++) { floattemx=0,temy=0; for(i=0;i<Nj[j];i++) { temx+=SAArray[j][i].x; temy+=SAArray[j][i].y; } ZArray[j].x=temx/Nj[j]; ZArray[j].y=temy/Nj[j]; }Step5://計算各聚類域中諸樣本與聚類中心的平均距離 floattemp=0.0; for(j=0;j<Nc;j++) { for(i=0;i<Nj[j];i++) { temp+=CalDistancefZ(SAArray[j][i],ZArray[j]); } DjAv[j]=temp/Nj[j]; temp=0.0; }Step6://計算全部模式樣本對應聚類中心的總平均距離 DAv=0; for(j=0;j<Nc;j++) { DAv+=Nj[j]*DjAv[j]; } DAv/=Nreal;Step7: if(count>=I)gotoStep14; if(Nc<=K/2)gotoStep8; if((count%2==0)||Nc>=2*K)gotoStep11;Step8://計算各聚類中樣本距離標準差 for(j=0;j<Nc;j++) { floattemx=0.0,temy=0.0; for(i=0;i<Nj[j];i++) {temx+=(SAArray[j][i].x-ZArray[j].x)*(SAArray[j][i].x-ZArray[j].x); temy+=(SAArray[j][i].y-ZArray[j].y)*(SAArray[j][i].y-ZArray[j].y); }Deltaj[j][0]=sqrtf(temx/Nj[j]); Deltaj[j][1]=sqrtf(temy/Nj[j]); temx=0.0,temy=0.0; } Step9://求每個標準差向量中的最大分量 for(j=0;j<Nc;j++) { Deltajmax[j]=Deltaj[j][0]>Deltaj[j][1]?Deltaj[j][0]:Deltaj[j][1]; DeltajmaxCor[j]=Deltaj[j][0]>Deltaj[j][1]?0:1; }Step10://分裂判斷和計算 for(j=0;j<Nc;j++) { if(Deltajmax[j]>ThetaS) { if((DjAv[j]>DAv&&Nj[j]>2*(ThetaN+1))||Nc<=K
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住院高血壓患者合并血糖異常對靶器官損害影響的相關分析
- 二零二五年度股東協(xié)議書-股東投票權及決策機制協(xié)議3篇
- 時代楷模先進事跡在高中思政課教學中的應用研究
- 投訴管理制度及處理流程
- 開啟自主學習的閘門
- 二零二五年度農(nóng)業(yè)高新技術田地租賃合作協(xié)議3篇
- 航空器材采購招標合同三篇
- 2025屆南通市海安高三語文上學期期末考試卷附答案解析
- 醫(yī)學美容科護士總結
- 專業(yè)化妝前臺接待員工作總結
- 護士的護理職業(yè)生涯規(guī)劃
- 義務教育數(shù)學課程標準(2022年版)重點
- 2021上海春考作文題解析及范文(怎樣做與成為什么樣人)
- 體育館改造裝修工程施工組織設計
- 137案例黑色三分鐘生死一瞬間事故案例文字版
- 【魔鏡洞察】2024藥食同源保健品滋補品行業(yè)分析報告
- 鋼結構工程施工(第五版) 課件 2項目四 高強度螺栓
- 大學生就業(yè)指導(高等院校學生學習就業(yè)指導課程)全套教學課件
- 《實驗診斷學》課件
- 小學網(wǎng)管的工作總結
- 診所校驗現(xiàn)場審核表
評論
0/150
提交評論