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

📄 gaussian.h

📁 混合高斯模型的C++程序
💻 H
字号:
#pragma once

#include "gmm/clust_defs.h"

class CGaussian
{
public:
	CGaussian(void);
	~CGaussian(void);

	// 从文件中导入GMM模型,path为文件目录,返回是否装载成功
	bool LoadModel(const char *path);
	// 将GMM模型导出文件,path为文件目录,返回是否保存成功
	bool SaveModel(const char *path);

	// 设置GMM的高斯数目,clusterClass为聚类后的数目,若值为0则表示自动确定,maxClass为初始化时的最大类别数
	void SetClass(int clusterClass, int maxClass);
	// 设置协方差矩阵的类型,isFull为false表示为对角矩阵,true表示为全矩阵
	void SetCovarianceType(bool isFull);
	// 设置GMM的数据向量的维数,dimension为维数
	void SetDimension(int dimension);

	// 根据给定的数据训练GMM,pSample为数据块的指针,number为数据的数目
	void TrainSample(double **pSample, int number);

	// 获得训练后的GMM的高斯维数
	int GetClass();
	// 获得数据向量的维数
	int GetDimension();

	// 获得数据出现的概率的log值
	double GetLogProbability(double *pSample);
	// 获得各维高斯的权重
	double GetPi(int index);
	// 获得各维高斯的均值
	double *GetMean(int index);
	// 获得各维高斯的协方差矩阵
	double **GetCovariance(int index);

	// 设置各维高斯的权重
	void SetPi(int index, double pi);
	// 设置各维高斯的均值
	void SetMean(int index, double *mean);
	// 设置各维高斯的协方差矩阵
	void SetCovariance(int index, double **covariance);

private:
	// 初始化
	void Initialize();
	// 清空
	void Clear();

private:
	struct SigSet m_model;
	int m_clusterClass, m_maxClass;
	bool m_isFull;
	int m_dimension;
	bool m_classInitialize;
};

⌨️ 快捷键说明

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