📄 isodata.h
字号:
// isodata.h: interface for the ISODATA class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ISODATA_H__BEC5DBC9_E1A4_42E0_B650_17EC8DAE26BB__INCLUDED_)
#define AFX_ISODATA_H__BEC5DBC9_E1A4_42E0_B650_17EC8DAE26BB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <math.h>
class ISODATA
{
public:
ISODATA();
virtual ~ISODATA();
void start (int vn , int vs , float vd[], char result[]);
private:
char *result;
float * datafield;
int vectornum;
int vectorsize;
struct GROUP
{
float * center;
float D;
float variance;
int groupsize;
int flag;//代表这个数组单元是否被占用
};
struct GROUP group[100];
int maxindex;//最大聚类号
int groupnum;
struct CCD//记录各聚类中心的距离
{
float dst;
int g1 , g2;//聚类编号
}ccd , * ccdhead;
float Dst;
void write (int i , int j , float data);//
float data (int i , int j);//
float * vector (int i);//
void initiate (int vn , int vs , float vd[]);//
void input ();//
void allocate ();//将模式样本分配给最近的聚类
void converge ();//
void diverge ();//
void renum ();//重新分配聚类号
void showresult ();
float distance (float * x , float * y);
void split (int i , int j);//
void insert (int i , int j , float D);
public:
int K;//预期的聚类中心数目
int Nmin;//每一聚类中最少的样本数目,即如少于此数就不作为一个孤立的聚类
float Ds;//一个聚类域中样本距离分布的标准差
float Dm;//两个聚类中心之间的最小距离,如小于此数,两个聚类进行合并
int L;//在于此迭代运算中可以合并的聚类中心的最多对数
int I;//迭代运算的次数序号
};
#endif // !defined(AFX_ISODATA_H__BEC5DBC9_E1A4_42E0_B650_17EC8DAE26BB__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -