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

📄 clinkprediction.cpp

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//陈美娅   李晶
#include "CLinkPrediction.h"

//modified by slj 20050408

CLinkPrediction::CLinkPrediction()
{
	m_fTollerance=float(1e-6);
	m_iDeterminedChannelMode=0;
	m_CodeNum=0;
}

////////////////////////////////////////////////////////////////////////////
/*

	TITLE:	The destruction of the class CLinkPrediction

	PURPOSE:release the space occupied by the two tables in the class

	AUTHOR:	Su Lijun

	DATE:	05/04/05
*/

////////////////////////////////////////////////////////////////////////////
CLinkPrediction::~CLinkPrediction()
{
	HSCodeNum2FER_TYPE *pCodeNum2FER = m_pstFERPredictionTable;
	HSChannel2FER_TYPE *pChannel2FER;
	HSMCS2FER_TYPE *pMCS2FER;
	HSCI2FER_TYPE *pCI2FER;
	int m,n,l,i,j,k;

	m = m_MultiCodeNum;
	for ( i=0; i<m; i++)
	{
		n = pCodeNum2FER[i].iChannel2FERLength;
		pChannel2FER = pCodeNum2FER[i].pstAddrOfChannel2FER;
		for ( j=0; j<n; j++)
		{
			l = pChannel2FER[j].iMCS2FERLength;
			pMCS2FER = pChannel2FER[j].pstAddrOfMCS2FER;
			for( k = 0; k < l; k++ )
			{
				pCI2FER = pMCS2FER[k].pstAddrOfCI2FER;
				delete pCI2FER;
			}
			delete pMCS2FER;
		}
		delete pChannel2FER;
	}

	delete pCodeNum2FER ;
	
}


void CLinkPrediction::Initialization(void)
{	
    //信道类型为1
	RATE2CI_TYPE *pRate1 = new RATE2CI_TYPE;
	pRate1->pTFI = new TFI_TYPE;
	pRate1->iChannelType = 1;
	pRate1->fDataRate = (float)12.2;
	pRate1->fTargetC2I = (float)-20.45;
	pRate1->pTFI->iTransBLNum = 3;
	pRate1->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate1);

    RATE2CI_TYPE *pRate2 = new RATE2CI_TYPE;
	pRate2->pTFI = new TFI_TYPE;
	pRate2->iChannelType = 1;
	pRate2->fDataRate = (float)64;
	pRate2->fTargetC2I = (float)-12.2;
	pRate2->pTFI->iTransBLNum = 4;
	pRate2->pTFI->iTransBLSize = 336;
	pRate2->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate2);

	RATE2CI_TYPE *pRate3 = new RATE2CI_TYPE;
	pRate3->pTFI = new TFI_TYPE;
	pRate3->iChannelType = 1;
	pRate3->fDataRate = (float)144;
	pRate3->fTargetC2I = (float)-9.2;
	pRate3->pTFI->iTransBLNum = 9;
	pRate3->pTFI->iTransBLSize = 336;
	pRate3->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate3);

	RATE2CI_TYPE *pRate4 = new RATE2CI_TYPE;
	pRate4->pTFI = new TFI_TYPE;
	pRate4->iChannelType = 1;
	pRate4->fDataRate = (float)384;
	pRate4->fTargetC2I = (float)-5.0;
	pRate4->pTFI->iTransBLNum = 24;
	pRate4->pTFI->iTransBLSize = 336;
	pRate4->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate4);

	//信道类型为2
	RATE2CI_TYPE *pRate5 = new RATE2CI_TYPE;
	pRate5->pTFI = new TFI_TYPE;
	pRate5->iChannelType = 2;
	pRate5->fDataRate = (float)12.2;
	pRate5->fTargetC2I = (float)-20.8;
	pRate5->pTFI->iTransBLNum = 3;
	pRate5->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate5);

	RATE2CI_TYPE *pRate6 = new RATE2CI_TYPE;
	pRate6->pTFI = new TFI_TYPE;
	pRate6->iChannelType = 2;
	pRate6->fDataRate = (float)64;
	pRate6->fTargetC2I = (float)-12.6;
	pRate6->pTFI->iTransBLNum = 4;
	pRate6->pTFI->iTransBLSize = 336;
	pRate6->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate6);

	RATE2CI_TYPE *pRate7 = new RATE2CI_TYPE;
	pRate7->pTFI = new TFI_TYPE;
	pRate7->iChannelType = 2;
	pRate7->fDataRate = (float)144;
	pRate7->fTargetC2I = (float)-9.5;
	pRate7->pTFI->iTransBLSize = 336;
	pRate7->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate7);

    RATE2CI_TYPE *pRate8 = new RATE2CI_TYPE;
	pRate8->pTFI = new TFI_TYPE;
	pRate8->iChannelType = 2;
	pRate8->fDataRate = (float)384;
	pRate8->fTargetC2I = (float)-5.8;
	pRate8->pTFI->iTransBLNum = 24;
	pRate8->pTFI->iTransBLSize = 336;
	pRate8->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate8);

	//信道类型为3
	RATE2CI_TYPE *pRate9 = new RATE2CI_TYPE;
	pRate9->pTFI = new TFI_TYPE;
	pRate9->iChannelType = 3;
	pRate9->fDataRate = (float)12.2;
	pRate9->fTargetC2I = (float)-20.8;
	pRate9->pTFI->iTransBLNum = 3;
	pRate9->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate9);

	RATE2CI_TYPE *pRate10 = new RATE2CI_TYPE;
	pRate10->pTFI = new TFI_TYPE;
	pRate10->iChannelType = 3;
	pRate10->fDataRate = (float)64;
	pRate10->fTargetC2I = (float)-14.7;
	pRate10->pTFI->iTransBLNum = 4;
	pRate10->pTFI->iTransBLSize = 336;
	pRate10->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate10);

	RATE2CI_TYPE *pRate11 = new RATE2CI_TYPE;
	pRate11->pTFI = new TFI_TYPE;
	pRate11->iChannelType = 3;
	pRate11->fDataRate = (float)144;
	pRate11->fTargetC2I = (float)-11.4;
	pRate11->pTFI->iTransBLNum = 9;
	pRate11->pTFI->iTransBLSize = 336;
	pRate11->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate11);

	RATE2CI_TYPE *pRate12 = new RATE2CI_TYPE;
	pRate12->pTFI = new TFI_TYPE;
	pRate12->iChannelType = 3;
	pRate12->fDataRate = (float)384;
	pRate12->fTargetC2I = (float)-7.0;
	pRate12->pTFI->iTransBLNum = 24;
	pRate12->pTFI->iTransBLSize = 336;
	pRate12->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate12);

	//信道类型为4
    RATE2CI_TYPE *pRate13 = new RATE2CI_TYPE;
	pRate13->pTFI = new TFI_TYPE;
	pRate13->iChannelType = 4;
	pRate13->fDataRate = (float)12.2;
	pRate13->fTargetC2I = (float)-21.0;
	pRate13->pTFI->iTransBLNum = 3;
	pRate13->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate13);

	RATE2CI_TYPE *pRate14 = new RATE2CI_TYPE;
	pRate14->pTFI = new TFI_TYPE;
	pRate14->iChannelType = 4;
	pRate14->fDataRate = (float)64;
	pRate14->fTargetC2I = (float)-14.7;
	pRate14->pTFI->iTransBLNum = 4;
	pRate14->pTFI->iTransBLSize = 336;
	pRate14->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate14);

	RATE2CI_TYPE *pRate15 = new RATE2CI_TYPE;
	pRate15->pTFI = new TFI_TYPE;
	pRate15->iChannelType = 4;
	pRate15->fDataRate = (float)144;
	pRate15->fTargetC2I = (float)-11.4;
	pRate15->pTFI->iTransBLNum = 9;
	pRate15->pTFI->iTransBLSize = 336;
	pRate15->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate15);

	RATE2CI_TYPE *pRate16 = new RATE2CI_TYPE;
	pRate16->pTFI = new TFI_TYPE;
	pRate16->iChannelType = 4;
	pRate16->fDataRate = (float)384;
	pRate16->fTargetC2I = (float)-7.0;
	pRate16->pTFI->iTransBLNum = 24;
	pRate16->pTFI->iTransBLSize = 336;
	pRate16->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate16);
	
	//信道类型为5
	RATE2CI_TYPE *pRate17 = new RATE2CI_TYPE;
	pRate17->pTFI = new TFI_TYPE;
	pRate17->iChannelType = 5;
	pRate17->fDataRate = (float)12.2;
	pRate17->fTargetC2I = (float)-21.4;
	pRate17->pTFI->iTransBLNum = 3;
	pRate17->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate17);

	RATE2CI_TYPE *pRate18 = new RATE2CI_TYPE;
	pRate18->pTFI = new TFI_TYPE;
	pRate18->iChannelType = 5;
	pRate18->fDataRate = (float)64;
	pRate18->fTargetC2I = (float)-12.2;
	pRate18->pTFI->iTransBLNum = 4;
	pRate18->pTFI->iTransBLSize = 336;
	pRate18->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate18);

	RATE2CI_TYPE *pRate19 = new RATE2CI_TYPE;
	pRate19->pTFI = new TFI_TYPE;
	pRate19->iChannelType = 5;
	pRate19->fDataRate = (float)144;
	pRate19->fTargetC2I = (float)-9.2;
	pRate19->pTFI->iTransBLNum = 9;
	pRate19->pTFI->iTransBLSize = 336;
	pRate19->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate19);

	RATE2CI_TYPE *pRate20 = new RATE2CI_TYPE;
	pRate20->pTFI = new TFI_TYPE;
	pRate20->iChannelType = 5;
	pRate20->fDataRate = (float)384;
	pRate20->fTargetC2I = (float)-5.0;
	pRate20->pTFI->iTransBLNum = 24;
	pRate20->pTFI->iTransBLSize = 336;
	pRate20->pTFI->iTTISlotNum = 30;
    m_pstRateTable.AddTail(pRate20);	

}

void CLinkPrediction::SetRate_BLERPredictionFileName(char* sFilename)
{
	strcpy(m_sRate_BLERPredictionFileName,
		sFilename);
}

RATE2CI_TYPE* CLinkPrediction::GetDataRate(float)
{
	//for compile
	return m_pstRateTable.GetHead();
}

//////////////////////////////////////////////////////////////////////////
/*

	TITLE:	Function initializing the class CLinkPrediction	

	PURPOSE:根据信道类型(参数),确定对应的数据文件,从文件中读入参数,
			确定数据表的大小,创建数据表,再从文件中读入数据,写入数据表,
			完成数据表的创建。参数为信道类型。

	SAMPLE CALL:
			CLinkPrediction mylink;
			mylink.initialization();

	CALLED BY FUNCTIONS:
			CNetworkDrive::SystemInitialization()

	AUTHOR:	Su Lijun

	DATE:	05/04/05
*/

//////////////////////////////////////////////////////////////////////////
void CLinkPrediction::HSInitialization()
{
	CStdioFile f1;		//定义一个I/O文件对象
	CString s1, s2, s3;		
	bool bFlag = false;
	double x;
	int i, j, k, l;
	char *q;

⌨️ 快捷键说明

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