📄 clinkprediction.cpp
字号:
//陈美娅 李晶
#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 + -