c语言iso校验算法,模式识别c语言ISODATA算法.doc
模式识别c语言ISODATA算法.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
18
积分
还剩页未读,继续阅读
关 键 词:模式识别
语言
ISODATA
算法
资源描述:
c语言编写的ISODATA程序
#include#include#include#include#include#include#define MAXNUM 100 //最大模式个数
#define MAXDIM 10 //最大模式维数
#define K 0.5 //分裂时使用的比值
#define MAXDOUBLE 1.0e20 //最大双精度值
#define N 10 //实际模式个数
#define DIM 2 //实际模式维数
struct Pattern //模式结构体
{
int n; //模式序号
float s[MAXDIM]; //模式数据
};
struct Cluster //类结构体
{
struct Pattern z; //类中心
int n; //类中包含的模式数目
float avg_d; //模式到类心的平均距离
struct Pattern y[MAXNUM]; //模式
float sigma[MAXDIM]; //分量的标准差
int max; //用于记录类内距离标准差矢量最大的分量下标
float sigma_max; //类内分量距离标准差最大值
};
struct Pattern InitPattern(int i,float a,float b) //对样本模式进行初始化
{
struct Pattern temp;
temp.n=i;
temp.s[0]=a;
temp.s[1]=b;
return temp;
}
//以下为各参数声明
int c=3; //预期的类数
int Nc=1; //初始聚类中心个数
int ON=1; //每一类中允许的最少模式数(小于此数不可单独成类)
float OS=1; //类内分量分布的标准差上限(大于此数就分裂)
float OC=4; //两类中心间的最小距离下限(小于此数两类合并)
int L=1; //在每次迭代中可以合并的类的最大对数
int I=8; //最多迭代次数
struct Pattern x[N]; //全部模式
struct Cluster w[N]; //全部类
float D[MAXNUM][MAXNUM]; //各类对中心间的距离
float dis; //总体平均距离
int iter=1; //记录迭代次数
int i,j; //循环变量
//以下为程序用到的调用函数
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) //计算两个模式距离的函数
{
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) //判断循环还是退出
{
printf("---------------经过 %d 次迭代,达到迭代次数--------------\n",iter);
return;
}
else
{
if(changed==1)
{
char ch;
iter++;
printf("本次迭代完成,是否需要改变参数(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: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:模式识别c语言ISODATA算法.doc
链接地址:https://www.renrendoc.com/p-40259822.html
c语言iso校验算法,模式识别c语言ISODATA算法.doc相关推荐
- 聚类之isodata算法
近期上课学习了isodata的迭代自组织数据分析算法,该算法是一个动态的聚类算法,与K-均值算法有相似之处,即聚类中心同样是通过样本均值的迭代运算来决定的,但不同k-均值算法的是,isodata算法是 ...
- 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法
Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...
- crc16几种标准校验算法及c语言代码
一.CRC16校验码的使用 现选择最常用的CRC-16校验,说明它的使用方法. 根据Modbus协议,常规485通讯的信息发送形式如下: 地址 功能码 数据信息 校验码 1byte 1byte nby ...
- C 语言 crc16校验算法,CRC16的标准校验算法及C语言实现(附代码)
原标题:CRC16的标准校验算法及C语言实现(附代码) CRC码由发送端计算,放置于发送信息报文的尾部.接收信息的设备再重新计算接收到信息报文的CRC,比较计算得到的CRC是否与接收到的相符,如果两者 ...
- crc校验算法程序c语言实现,CRC校验的快速算法的C语言实现
CRC校验的快速算法的C语言实现 CC R校验的快速算法的C语言实现 颜国谷 (中原油田信息中心 4 70 ) 5 0 1 摘要:c c R循环冗余校验算法,是一种在数据存储和数据通讯领域中使用十分广 ...
- 一文详解循环冗余校验校验算法(CRC校验)及C语言代码的实现 ---- 以CRC-16/MODBUS为例讲解
一.概述 现在的产品开发过程中,无论是数据的储存还是传输,都需要确保数据的准确性,所以就需要在数据帧后面附加一串校验码,方便接收方使用校验码校验接收到的数据是否是正确的. 常用的校验方式有奇偶校验.异 ...
- 模式识别c语言isodata算法,《模式识别-黄庆明》第二章(ISODATA算法实例).doc
ISODATA算法实例: 此例中N 8,n 2.假设取初始值Nc 1,z1 1 x1 0 0 T,则运算步骤如下: 第一步:取K 2,θN 1,θS 1,θc 4,L 1,I 4 预选:K 预期的聚类 ...
- 十种经典排序算法精粹(c语言版本)
下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...
- 迪杰斯特拉算法(C语言实现)
迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...
最新文章
- java office 集成开发_Office文件格式突变,促使Java和Office更完美集成
- 用Flutter改造ZS项目小记一:界面显示一张图片
- svn命令行使用说明
- poj 2948 Martian Mining (dp)
- java 定时器代码_Java定时器代码的编写
- initializeBean()方法为容器产生的Bean 实例对象添加BeanPostProcessor 后置处理器
- arm rtx教程_ARM CMSIS标准概述及快速入门
- ASP VBScript 函数速查表
- 中国石油大学(华东)计算机科学与技术,2017年中国石油大学(华东)函授本科计算机科学与技术专业...
- SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新
- SQLConnect
- 74LS系列芯片简记——10-19
- SSH和SSM有什么区别?
- uniapp——点击图片放大预览
- 手机模拟器自带root_VMOS Pro Android 手机上的模拟器 (手机版虚拟机)
- IPHONE能否成为圣剑?助苹果斩杀群雄!
- VS2019怎么没有C++的窗体应用模板_简历中常被忽视的「自我评价」,怎么写?
- python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中
- 《十二》CSS3 Grid 网格布局
- Functions are not valid as a React child. This may happen if you return a Component instead of 「Comp
热门文章
- 二维数组删除_「leetcode」数组:总结篇!(一文搞懂数组题目)
- Pycharm(社区版) 创建Flask项目
- 【机器视觉学习笔记】双边滤波算法(C++)
- 深度学习(三)之LSTM写诗
- Java 基础——类的加载
- Maven的pom.xml文件结构之Build配置build
- Taro+react开发(69):传入localstoage需要jsonstringfy处理
- [react] react是哪个公司开发的?
- 前端学习(3030):vue+element今日头条管理-顶部导航栏布局
- 一文带你理解如何解决工作中的需求