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

📄 dxdxa_mfc.cpp

📁 语音识别配套的VQ及DHMM模型训练程序(C语言)
💻 CPP
字号:
//	DXDXA_MFC.cpp:
//		Implementation of the DXDXA_MFC Module.
//		That is Data Structure & API of Dynamic X Dimension X Array.
//
//	Created 2001/08, By DongMing, MDSR.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DXDXA_MFC.h"

//////////////////////////////////////////////////////////////////////
//	API functions

//////////////////////////////////////////////////////////////////////
//	函数名称:d2dda_New
//	函数功能:为二维-动态-double-数组申请空间
//	函数性质:API
//	输入参数:
//		nDim1,维数 1
//		nDim2,维数 2
//	输出参数:
//		无
//	返回值:
//		成功时候返回一个DYNA_2DIM_DOUBLE_ARRAY指针;失败返回NULL
//	备注:返回的DYNA_2DIM_DOUBLE_ARRAY类型的变量 d2dda,可以如访问普通数组
//		一样来访问,d2dda[Index1][Index2]
DYNA_2DIM_DOUBLE_ARRAY d2dda_New(int nDim1, int nDim2)
{
	DYNA_2DIM_DOUBLE_ARRAY Result;
	int i;

	Result = new PDOUBLE[nDim1];
	if (Result == NULL) return NULL;
	memset(Result, 0, sizeof(PDOUBLE) * nDim1);

	for (i = 0; i < nDim1; i++)
	{
		Result[i] = new double[nDim2];
		if (Result[i] == NULL)
		{
			d2dda_Free(Result, nDim1, nDim2);
			return NULL;
		}
	}

	return Result;
}

//////////////////////////////////////////////////////////////////////
//	函数名称:d2dda_Free
//	函数功能:为二维-动态-double-数组释放空间
//	函数性质:API
//	输入参数:
//		d2dda,数组指针
//		nDim1,维数 1
//		nDim2,维数 2
//	输出参数:
//		无
//	返回值:
//		无
//	备注:与d2dda_New搭配使用
void d2dda_Free(DYNA_2DIM_DOUBLE_ARRAY d2dda, int nDim1, int nDim2)
{
	int i;

	if (d2dda == NULL) return;

	for (i = 0; i < nDim1; i++)
	{
		if (d2dda[i] != NULL) delete[] d2dda[i];
	}

	delete[] d2dda;
}

DYNA_3DIM_DOUBLE_ARRAY d3dda_New(int nDim1, int nDim2, int nDim3)
{
	DYNA_3DIM_DOUBLE_ARRAY Result;
	int i;

	Result = new DYNA_2DIM_DOUBLE_ARRAY[nDim1];
	if (Result == NULL) return NULL;
	memset(Result, 0, sizeof(DYNA_2DIM_DOUBLE_ARRAY) * nDim1);

	for (i = 0; i < nDim1; i++)
	{
		Result[i] = d2dda_New(nDim2, nDim3);
		if (Result[i] == NULL)
		{
			d3dda_Free(Result, nDim1, nDim2, nDim3);
			return NULL;
		}
	}

	return Result;
}

void d3dda_Free(DYNA_3DIM_DOUBLE_ARRAY d3dda, int nDim1, int nDim2, int nDim3)
{
	int i;

	if (d3dda == NULL) return;

	for (i = 0; i < nDim1; i++)
	{
		if (d3dda[i] != NULL) d2dda_Free(d3dda[i], nDim2, nDim3);
	}

	delete[] d3dda;
}

//////////////////////////////////////////////////////////////////////
//	函数名称:d2dna_New
//	函数功能:为二维-动态-int-数组申请空间
//	函数性质:API
//	输入参数:
//		nDim1,维数 1
//		nDim2,维数 2
//	输出参数:
//		无
//	返回值:
//		成功时候返回一个DYNA_2DIM_INT_ARRAY指针;失败返回NULL
//	备注:返回的DYNA_2DIM_INT_ARRAY类型的变量 d2dna,可以如访问普通数组
//		一样来访问,d2dna[Index1][Index2]
DYNA_2DIM_INT_ARRAY d2dna_New(int nDim1, int nDim2)
{
	DYNA_2DIM_INT_ARRAY Result;
	int i;

	Result = new PINT[nDim1];
	if (Result == NULL) return NULL;
	memset(Result, 0, sizeof(PINT) * nDim1);

	for (i = 0; i < nDim1; i++)
	{
		Result[i] = new int[nDim2];
		if (Result[i] == NULL)
		{
			d2dna_Free(Result, nDim1, nDim2);
			return NULL;
		}
	}

	return Result;
}

//////////////////////////////////////////////////////////////////////
//	函数名称:d2dna_Free
//	函数功能:为二维-动态-int-数组释放空间
//	函数性质:API
//	输入参数:
//		d2dna,数组指针
//		nDim1,维数 1
//		nDim2,维数 2
//	输出参数:
//		无
//	返回值:
//		无
//	备注:与d2dna_New搭配使用
void d2dna_Free(DYNA_2DIM_INT_ARRAY d2dna, int nDim1, int nDim2)
{
	int i;

	if (d2dna == NULL) return;

	for (i = 0; i < nDim1; i++)
	{
		if (d2dna[i] != NULL) delete[] d2dna[i];
	}

	delete[] d2dna;
}

DYNA_3DIM_INT_ARRAY d3dna_New(int nDim1, int nDim2, int nDim3)
{
	DYNA_3DIM_INT_ARRAY Result;
	int i;

	Result = new DYNA_2DIM_INT_ARRAY[nDim1];
	if (Result == NULL) return NULL;
	memset(Result, 0, sizeof(DYNA_2DIM_INT_ARRAY) * nDim1);

	for (i = 0; i < nDim1; i++)
	{
		Result[i] = d2dna_New(nDim2, nDim3);
		if (Result[i] == NULL)
		{
			d3dna_Free(Result, nDim1, nDim2, nDim3);
			return NULL;
		}
	}

	return Result;
}

void d3dna_Free(DYNA_3DIM_INT_ARRAY d3dna, int nDim1, int nDim2, int nDim3)
{
	int i;

	if (d3dna == NULL) return;

	for (i = 0; i < nDim1; i++)
	{
		if (d3dna[i] != NULL) d2dna_Free(d3dna[i], nDim2, nDim3);
	}

	delete[] d3dna;
}

⌨️ 快捷键说明

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