📄 cluster.h
字号:
#pragma once
#include "afx.h"
#include "NPoint.h"
#include "afxcoll.h"
class Cluster :public CObject
{
public:
Cluster(void);
Cluster(int Dim,int Lev);
public:
~Cluster(void);
protected:
// 聚类内点的维度
int dimension;
// 聚类的均值中心点
NPoint *MeanPoint;
// 聚类的半径
double Radius;
// 聚类的子聚类
CObArray SubCluster;
public:
// 获得聚类的维度
int GetDimension(void);
public:
// 获得聚类的中心点
NPoint* GetMeanPoint(void);
public:
// 获得聚类的半径
double GetRadius(void);
public:
// 插入新的子聚类
void InsertSubCluster(Cluster* Sub);
protected:
// 聚类所在的L层
int Level;
public:
// 获得聚类的层次信息
int GetLevel(void);
public:
// 计算聚类中心点
void ComputeMean(void);
public:
// 计算聚类的半径
void ComputeRadius(void);
public:
// 当聚类是叶子节点时,自身的点就是均值中心点
void InitialMeanPoint(NPoint* PointPtr);
public:
// 获得子聚类的数组指针
CObArray* GetSubCluster(void);
public:
// 设置聚类层次
void SetLevel(int Lev);
protected:
// 标记聚类节点是否是叶子节点,如果是叶子节点,标记叶子节点的编号
int Tag;
public:
// 获得标记信息
int GetTag(void);
public:
// 设置标记位
void SetTag(int T);
protected:
// 子聚类之间的距离矩阵指针
double* DisArray;
public:
// 获得距离矩阵指针
double* GetDisArray(void);
public:
// 计算聚类之间的矩阵
void ComputeDisArr(void);
public:
// 获得聚类中距离最近的两个子聚类
double GetClosePairs(int& ClusterA, int& ClusterB);
protected:
// 聚类中拥有的样本点数
int PointNum;
public:
// 聚合子聚类
void AggSubCluster(double Threshold);
public:
// 在二维坐标系下图形显示聚类
void Illustrate(CDC* pDC, int Zoom, int CoordinateX, int CoordinateY,int Order,NPoint* Mean);
public:
// 计算查询点到此举类的下限距离
double DisLB(NPoint* QueryPoint);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -