⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isodata.h

📁 聚类算法研究
💻 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 + -