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

📄 knear.h

📁 Parzen 窗 和 K近邻法进行概率密度估计 还带一个示波器控件.
💻 H
字号:
// KNear.h: interface for the CKNear class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_KNEAR_H__86EEE553_3C1F_489A_B825_0C84E21A84C3__INCLUDED_)
#define AFX_KNEAR_H__86EEE553_3C1F_489A_B825_0C84E21A84C3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//////////////////////////////////////////////
// K近邻法估计概率密度
/////////////////////////////////////////////



//////////////////////////////////////////////
//
// Note: 
//  	目前只能处理1维情况!!!!!!!!!!!!!!!!!!!!!
//
//  k Nearest neighbor method

//////////////////////////////////////////////
#include "estimate.h"
class CKNN  : public CEstimate
{
public:

	typedef struct DISTANCE
	{
		int iIndex;    //样点的序号
		double dbDist; //改样点和x的距离
		double x;      //样点的x1分量   (主要因为只能处理1维,所以做此下策)
	}DISTANCE;

public:
	CKNN(int nDim);
	virtual ~CKNN();


public:
	//获得X处的概率密度估计值
	//重载基类方法
	virtual double  Probility(vector<double> x);

private:

	DISTANCE  * m_pDist;
	int			m_nCount;	//样点个数,此处需要主要是为了 pDist使用



protected:

	//计算x附近含Kn个点的区域的体积
	inline double CaculateVn(int kn);
};


	/***************************************
	*Bug!
	*  I can only dispose one dimension vector!
	*
	***************************************/

inline double CKNN::CaculateVn(int kn)
{
	double dbMin = m_pDist[0].x;
	double dbMax = m_pDist[0].x;
	for (int i = 0;i < kn; i++)
	{
		dbMin = min(m_pDist[i].x , dbMin);
		dbMax = max(m_pDist[i].x , dbMax);

	}

	return (dbMax-dbMin);

}


#endif // !defined(AFX_KNEAR_H__86EEE553_3C1F_489A_B825_0C84E21A84C3__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -