c语言iso校验算法,模式识别c语言ISODATA算法.doc
模式識別c語言ISODATA算法.doc
下載提示(請認(rèn)真閱讀)1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
文檔包含非法信息?點此舉報后獲取現(xiàn)金獎勵!
下載文檔到電腦,查找使用更方便
18
積分
還剩頁未讀,繼續(xù)閱讀
關(guān)?鍵?詞:模式識別
語言
ISODATA
算法
資源描述:
c語言編寫的ISODATA程序
#include#include#include#include#include#include#define MAXNUM 100 //最大模式個數(shù)
#define MAXDIM 10 //最大模式維數(shù)
#define K 0.5 //分裂時使用的比值
#define MAXDOUBLE 1.0e20 //最大雙精度值
#define N 10 //實際模式個數(shù)
#define DIM 2 //實際模式維數(shù)
struct Pattern //模式結(jié)構(gòu)體
{
int n; //模式序號
float s[MAXDIM]; //模式數(shù)據(jù)
};
struct Cluster //類結(jié)構(gòu)體
{
struct Pattern z; //類中心
int n; //類中包含的模式數(shù)目
float avg_d; //模式到類心的平均距離
struct Pattern y[MAXNUM]; //模式
float sigma[MAXDIM]; //分量的標(biāo)準(zhǔn)差
int max; //用于記錄類內(nèi)距離標(biāo)準(zhǔn)差矢量最大的分量下標(biāo)
float sigma_max; //類內(nèi)分量距離標(biāo)準(zhǔn)差最大值
};
struct Pattern InitPattern(int i,float a,float b) //對樣本模式進(jìn)行初始化
{
struct Pattern temp;
temp.n=i;
temp.s[0]=a;
temp.s[1]=b;
return temp;
}
//以下為各參數(shù)聲明
int c=3; //預(yù)期的類數(shù)
int Nc=1; //初始聚類中心個數(shù)
int ON=1; //每一類中允許的最少模式數(shù)(小于此數(shù)不可單獨成類)
float OS=1; //類內(nèi)分量分布的標(biāo)準(zhǔn)差上限(大于此數(shù)就分裂)
float OC=4; //兩類中心間的最小距離下限(小于此數(shù)兩類合并)
int L=1; //在每次迭代中可以合并的類的最大對數(shù)
int I=8; //最多迭代次數(shù)
struct Pattern x[N]; //全部模式
struct Cluster w[N]; //全部類
float D[MAXNUM][MAXNUM]; //各類對中心間的距離
float dis; //總體平均距離
int iter=1; //記錄迭代次數(shù)
int i,j; //循環(huán)變量
//以下為程序用到的調(diào)用函數(shù)
void Init();
void ISODATA();
void InitCenter();
void Clustering();
float Distance(struct Pattern x1,struct Pattern x2);
struct Cluster Insert(struct Pattern a,struct Cluster b);
int CheckAndUnion();
void CalParameter();
struct Pattern CalCenter(struct Cluster a);
float Cal_D(int i);
void CalSigma();
int divide();
void CalCenterDis();
int UnionByOC();
void Union(int a,int b);
void PrintCluster();
void main()
{
Init();
printf("\n****************** ISODATA 算法程序 **************************\n");
printf("本實驗使用樣本集如下:\n");
x[0]=InitPattern(0,0,0);
x[1]=InitPattern(1,3,8);
x[2]=InitPattern(2,2,2);
x[3]=InitPattern(3,1,1);
x[4]=InitPattern(4,5,3);
x[5]=InitPattern(5,4,8);
x[6]=InitPattern(6,6,3);
x[7]=InitPattern(7,5,4);
x[8]=InitPattern(8,6,4);
x[9]=InitPattern(9,7,5);
for(i=0;itemp)
{
min=temp;
l=j;
}
}
w[l]=Insert(x[i],w[l]);
}
}
float Distance(struct Pattern x1,struct Pattern x2) //計算兩個模式距離的函數(shù)
{
int i;
float temp=0.0;
for(i=0;idis)&&(w[j].n>2*(ON+1))||(Nc<=c/2))
{
i=w[j].max;
for(l=Nc;l>j;l--)
w[l].z=w[l-1].z;
w[j+1].z.s[i]-=K*sigma_temp;
w[j].z.s[i]+=K*sigma_temp;
Nc++;
return 1;
}
}
return 0;
}
void CalCenterDis() //計算各類對中心間的距離
{
int i,j;
for(i=0;ik;l--)
Dmin[l]=Dmin[l-1];
Dmin[k].d=D[i][j];
Dmin[k].i=i;
Dmin[k].j=j;
break;
}
for(i=0;i-1&&Dmin[i].j>-1)
{
Union(Dmin[i].i,Dmin[i].j);
flag=1;
}
for(j=0;j=2*c)||iter%2==0)
goto step8;
step6:
CalSigma();
step7:
if(divide())
{
iter++;
goto step2;
}
step8:
CalCenterDis();
step9:
if(UnionByOC())
changed=1;
step10:
if(iter>=I) //判斷循環(huán)還是退出
{
printf("---------------經(jīng)過 %d 次迭代,達(dá)到迭代次數(shù)--------------\n",iter);
return;
}
else
{
if(changed==1)
{
char ch;
iter++;
printf("本次迭代完成,是否需要改變參數(shù)(Y/N)??:");
while(!isspace(ch=getchar()));
if(ch==y||ch==Y)
goto start;
else goto step2;
}
else
{
iter++;
goto step2;
}
}
}
展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
?
人人文庫網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
關(guān)于本文
本文標(biāo)題:模式識別c語言ISODATA算法.doc
鏈接地址:https://www.renrendoc.com/p-40259822.html
總結(jié)
以上是生活随笔為你收集整理的c语言iso校验算法,模式识别c语言ISODATA算法.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux文件查询笔记
- 下一篇: 刷ROM必備的clockworkmod