模式识别c语言分类,模式识别c语言IODATA算法.doc

模式识别c语言IODATA算法

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 CalCenterDi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值