【最新】C语言代码模式识别——最大最小距离分类法.docx
- 文档编号:94273
- 上传时间:2022-10-02
- 格式:DOCX
- 页数:3
- 大小:14.42KB
【最新】C语言代码模式识别——最大最小距离分类法.docx
《【最新】C语言代码模式识别——最大最小距离分类法.docx》由会员分享,可在线阅读,更多相关《【最新】C语言代码模式识别——最大最小距离分类法.docx(3页珍藏版)》请在冰豆网上搜索。
#include
#include
#defineC0.5
main(void)
{
intx[100][3],z[100][3],b[100];//x[][]输入点坐标z[][]:
标记第几个聚类中
心;w[][]用于标记各点到聚类中心距离最小值
inti,j,h,N,flag,k=1,f=1;//f:
聚类中心个数;b[]用于记录与聚类中心最大距离的
点标号;dd[][]:
在循环体中记录各点与聚类中心距离
floatw[100][100],dd[100][100],Q,max1,max2,distance[100];//distance[]:
记并求
出录第二个聚类点
b[0]=0;
printf("最大最小距离分类法\n\n");
printf("请输入坐标数N");
scanf("%d",&N);
printf("请输入各点的坐标:
\n");
for(i=0;i { x[i][0]=i+1;//x[0[0]=1,x[1][0]=2... for(j=1;j<=2;j++)//x数组为三列数组其中第一列用来编号记录个点编号从1 开始x1,x2。 如x[3][3]={{1,0,0},{2,3,8},{3,2,2}} scanf("%d",&x[i][j]); } printf("输入的点为\n"); for(i=0;i { printf("x%d: ",x[i][0]); printf("{%d,%d}",x[i][1],x[i][2]); } z[0][0]=x[0][0],z[0][1]=x[0][1],z[0][2]=x[0][2]; printf("\n取输入的第一个点为第一聚类中心 z%d: {%d,%d}\n",x[0][0],x[0][1],x[0][2]); for(i=0;i { distance[i]=sqrt((x[i][1]-z[0][1])*(x[i][1]-z[0][1])+(x[i][2]-z[0][2])*(x[i] [2]-z[0][2])); printf("第%d个点(%d,%d)到z%d(%d,%d)的距离 是%f\n",(i+1),x[i][1],x[i][2],z[0][0],z[0][1],z[0][2],distance[i]); } max1=distance[0]; for(j=0;j<=N;j++) { if(distance[j]>max1) {max1=distance[j]; flag=j;} } b[f]=flag; printf("到z%d{%d,%d}距离最远的点(既聚类点)是 (%d,%d)\n",z[0][0],z[0][1],z[0][2],x[flag][1],x[flag][2]); Q=C*max1; printf("阈值Q是%f\n",Q); while(k! =0) { for(j=0;j<=f;j++) { printf("各点到各聚类中心距离为\n"); for(i=0;i { for(j=0;j<=f;j++) { dd[i][j]=(float)sqrt((x[i][1]-x[b[j]][1])*(x[i][1]-x[b[j]][1])+(x[i][2]-x[b[ j]][2])*(x[i][2]-x[b[j]][2])); printf("%f",dd[i][j]); }printf("\n"); } } for(i=0;i {w[i][0]=dd[i][0]; for(j=0;j<=f;j++) { if(w[i][0]>=dd[i][j])//if(w[i][0]>dd[i][j]不对这样会导致最后打印不 出第一类的各点 {w[i][0]=dd[i][j]; w[i][2]=j;} } w[i][1]=i; } printf("各坐标点到聚类中心最小距离是\n"); for(i=0;i printf("%f\n",w[i][0]); max2=w[0][0]; for(i=0;i { if(max2 {max2=w[i][0]; h=i;} } if(max2>Q) { f=f+1; b[f]=h; printf("\n由于到聚类中心距离中有比阈值大的新聚类中心产生"); printf("x%d: {%d,%d}\n",h+1,x[h][1],x[h][2]); } else { printf("各坐标点到聚类中心距离均小于阈值%f,分类结束\n",Q); k=0; printf("一共产生%d类聚类中心\n",f+1); for(i=0;i<=f;i++) {printf("第%d类聚类中心包含坐标有",i+1); for(j=0;j { if(w[j][2]==i) {printf("x%d: (%d,%d)",j+1,x[j][1],x[j][2]);} } printf("\n"); } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言 代码 模式识别 最大 最小 距离 分类法