亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clinkprediction.cpp

?? 這是cdma2000的一個分組調度算法實例
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//////////////////////////////////////////////////////////////////////////
//
//	CLinkPrediction.cpp
//	 implementation of the class CLinkPrediction
//
//	Writer:	Ouyang Hui
//		March 27, 2001
//
//		March 28, 2001
//			Add Functions 
//			void CLinkPrediction::Initialization(int iChannelType)
//			RATE2CI_TYPE* CLinkPrediction::GetDataRate(int iPacketSize, 
//										  float fC2I)
//			float CLinkPrediction::GetBLER(int iPacketSize, float fMeanSNR, 
//							  float fStdSNR, float fEncodingRate)
//
//		March 29, 2001
//			test the functions OK
//
//		The first half of April
//			add the algorithms of interpolation
//
///////////////////////////////////////////////////////////////////////////

#include "CLinkPrediction.h"


CLinkPrediction::CLinkPrediction()
{
	m_fTollerance=float(1e-6);
	m_iDeterminedPacketSize=0;
	m_fDeterminedSPDCHC2I=0.;
	m_fDeterminedErrorRate=0.;
}

////////////////////////////////////////////////////////////////////////////
//
//	TITLE:	The destruction of the class CLinkPrediction
//
//	PURPOSE:release the space occupied by the two tables in the class
//
//	AUTHOR:	Ouyang Hui
//
//	DATE:	01/04/04
//
//	MODIFICATIONS SINCE 01/04/04:
//			01/04/05	Ouyang Hui
//			Add codes to delete the branches of the two tables
//
////////////////////////////////////////////////////////////////////////////
CLinkPrediction::~CLinkPrediction()
{
	EPS2CI_TYPE* pEPS2CI_TYPE=m_pstRatePredictionTable;
	RATE2CI_TYPE* pRATE2CI_TYPE;
	EPS2BLER1_TYPE* pEPS2BLER1_TYPE=m_pstBLERPredictionTable;
	RATE2BLER1_TYPE* pRATE2BLER1_TYPE;
	SNR2BLER1_TYPE* pSNR2BLER1_TYPE;
	int m,n,i,j;

	m=m_iPacketSizeNum;
	for (i=0;i<m;i++)
	{
		pRATE2CI_TYPE=pEPS2CI_TYPE[i].pstAddrOfRate2CI;
		delete pRATE2CI_TYPE;
	}

	m=m_iPacketSizeNum;
	for (i=0;i<m;i++)
	{
		n=pEPS2BLER1_TYPE[i].iRATE2BLER1Length;
		pRATE2BLER1_TYPE=pEPS2BLER1_TYPE[i].pstAddrOfRate2BLER;
		for (j=0;j<n;j++)
		{
			pSNR2BLER1_TYPE=pRATE2BLER1_TYPE[j].pstAddrOfSNR2BLER;
			delete pSNR2BLER1_TYPE;
		}
		delete pRATE2BLER1_TYPE;
	}

	delete pEPS2CI_TYPE ;
	delete pEPS2BLER1_TYPE ;
	
}

//////////////////////////////////////////////////////////////////////////
//
//	TITLE:	Function initializing the class CLinkPrediction	
//
//	PURPOSE:根據信道類型(參數),確定對應的數據文件,從文件中讀入參數,
//			確定數據表的大小,創建數據表,再從文件中讀入數據,寫入數據表,
//			完成數據表的創建。參數為信道類型。
//
//	SAMPLE CALL:
//			CLinkPrediction mylink;
//			mylink.initialization();
//
//	CALLED BY FUNCTIONS:
//			CNetworkDrive::SystemInitialization()
//
//	CALLING FUNCTIONS:
//			CLinkPrediction::CheckTheInputs()
//
//	AUTHOR:	Ouyang Hui
//
//	DATE:	01/04/04
//
//	MODIFICATIONS SINCE 01/04/04:
//
//////////////////////////////////////////////////////////////////////////
void CLinkPrediction::Initialization()
{
	CStdioFile f1;		//定義一個I/O文件對象
	CString s1,s2,s3;		
	bool bFlag=false;
	double x;
	int i,j,k;
	char* q;

//	m_iChannelType=iChannelType;

	const char* cSpecificString1="速率估計部分";
	const char* cSpecificString2="PER估計部分";

	/* 打開數據文件準備讀*/
	if(!f1.Open(m_sRate_BLERPredictionFileName,
		CFile::modeRead))
	{
	#ifdef _DEBUG
		afxDump<<"Unable to open file"<<"\n";	//異常處理
	#endif
	}

	char buf[100];	//定義一個數據緩沖區,用于存放一行字符串

	
	/////////////////////////////////////////////////////////////////////
	//	Construct the rate-prediction table
	//	The format of this part in the data file is:
	//	字符標志(標識速率估計部分的數據) EP數據點的個數(整型)
	//	EP大小(整型) 數據點個數(整型)
	//	C/I(實型) 數據速率(實型) 等效編碼速率(實型) 調制方式(整型) 時隙數(整型)
	//	........
	//	........
	//	........
	//	C/I(實型) 數據速率(實型) 等效編碼速率(實型) 調制方式(整型) 時隙數(整型)
	//	EP大小(整型) 數據點個數(整型)
	//	C/I(實型) 數據速率(實型) 等效編碼速率(實型) 調制方式(整型) 時隙數(整型)
	//	........
	//	........
	//	........
	//	C/I(實型) 數據速率(實型) 等效編碼速率(實型) 調制方式(整型) 時隙數(整型)
	//	........
	//	........
	//	........


	while(f1.ReadString(buf,100)!=NULL)
	{
		s1=buf; //把這一行字符串內容賦給對象s1
		if (s1.Find(cSpecificString1)>=0) 
		{
			bFlag=TRUE;
			break;
		}
	}

	if (!bFlag)
	{
		cerr<<"Cannot find the string "<<cSpecificString1<<endl;
		f1.Close();
		exit(0);
	}

	s2=s1.Right(s1.GetLength()-s1.Find(' ')-1);
	m_iPacketSizeNum=(int)strtod(s2,&q);  //the number of encoder packet size
	EPS2CI_TYPE* pEPS2CI=new EPS2CI_TYPE [m_iPacketSizeNum];
	RATE2CI_TYPE* pRATE2CI;
	for (i=0;i<m_iPacketSizeNum;i++)
	{
		f1.ReadString(buf,100);
		x=strtod(buf,&q); //encoder packet size
		pEPS2CI[i].iEncoderPacketSize=(int)x;
		strcpy(buf,q);
		x=strtod(buf,&q); //the number of data
		pEPS2CI[i].iRATE2CILength=(int)x;
		pRATE2CI=new RATE2CI_TYPE[pEPS2CI[i].iRATE2CILength];
		for (j=0;j<pEPS2CI[i].iRATE2CILength;j++)
		{
			f1.ReadString(buf,100);
			x=strtod(buf,&q);	//C/I
			pRATE2CI[j].fTargetC2I=(float)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//data rate
			pRATE2CI[j].fDataRate=(float)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//effective code rate
			pRATE2CI[j].fEffectiveCodeRate=(float)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//modulation order
			pRATE2CI[j].iModulationOrder=(int)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//slot number per sub-packet
			pRATE2CI[j].iSlotNumPerSubPacket=(int)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//symbol number per sub-packet
			pRATE2CI[j].iSymbolNumber=(int)x;
		}
		pEPS2CI[i].pstAddrOfRate2CI=pRATE2CI;

	}

	m_pstRatePredictionTable=pEPS2CI;


	/////////////////////////////////////////////////////////////////////
	//	Construct the BLER-prediction table
	//	The format of this part in the data file is:
	//	字符標志(標識PER估計部分的數據起始位置) EP數據點的個數(整型)
	//	EP大小(整型) 等效編碼速率的個數(整型)
	//	等效編碼速率(實型) 數據點的個數(整型)
	//	Es/Nt的均值(實型) Es/Nt的標準差(實型) PER(實型)
	//	......
	//	......
	//	......
	//	Es/Nt的均值(實型) Es/Nt的標準差(實型) PER(實型)
	//	等效編碼速率(實型) 數據點的個數(整型)
	//	Es/Nt的均值(實型) Es/Nt的標準差(實型) PER(實型)
	//	......
	//	......
	//	......
	//	Es/Nt的均值(實型) Es/Nt的標準差(實型) PER(實型)
	//	......
	//	......
	//	......
	//	EP大小(整型) 等效編碼速率的個數(整型)
	//	......
	//	......
	//	......


	bFlag=false;

	while(f1.ReadString(buf,100)!=NULL)
	{
		s1=buf; //把這一行字符串內容賦給對象s1
		if (s1.Find(cSpecificString2)>=0) 
		{
			bFlag=TRUE;
			break;
		}
	}

	if (!bFlag)
	{
		cerr<<"Cannot find the string "<<cSpecificString2<<endl;
		f1.Close();
		exit(0);
	}

	s2=s1.Right(s1.GetLength()-s1.Find(' ')-1);
	
	EPS2BLER1_TYPE* pEPS2BLER1=new EPS2BLER1_TYPE[m_iPacketSizeNum];
	RATE2BLER1_TYPE* pRATE2BLER1;
	SNR2BLER1_TYPE* pSNR2BLER1;
	float fRate;
	for (i=0;i<m_iPacketSizeNum;i++)
	{
		f1.ReadString(buf,100);
		x=strtod(buf,&q); //encoder packet size
		pEPS2BLER1[i].iEncoderPacketSize=(int)x;
		strcpy(buf,q);
		x=strtod(buf,&q); //the number of data
		pEPS2BLER1[i].iRATE2BLER1Length=(int)x;

		pRATE2BLER1=new RATE2BLER1_TYPE[pEPS2BLER1[i].iRATE2BLER1Length];

		for (j=0;j<pEPS2BLER1[i].iRATE2BLER1Length;j++)
		{
			f1.ReadString(buf,100);
			x=strtod(buf,&q);	//effective code rate		
			pRATE2BLER1[j].fEffectiveCodeRate=(float)x;
			fRate=(float)x;
			strcpy(buf,q);
			x=strtod(buf,&q);	//number of data
			pRATE2BLER1[j].iSNR2BLER1Length=(int)x;

			pSNR2BLER1=new SNR2BLER1_TYPE[pRATE2BLER1[j].iSNR2BLER1Length];

			for (k=0;k<pRATE2BLER1[j].iSNR2BLER1Length;k++)
			{
				f1.ReadString(buf,100);
				x=strtod(buf,&q);	//mean of Es/Nt
				pSNR2BLER1[k].fMeanSNR
					=(float)(x+10*log10(fRate));

				strcpy(buf,q);
				x=strtod(buf,&q);	//std of Es/Nt
				pSNR2BLER1[k].fStdSNR=(float)x;

				strcpy(buf,q);
				x=strtod(buf,&q);	//PER
				pSNR2BLER1[k].fBLER=(float)x;
			
			}

			pRATE2BLER1[j].pstAddrOfSNR2BLER=pSNR2BLER1;
			
		}
		pEPS2BLER1[i].pstAddrOfRate2BLER=pRATE2BLER1;

	}

	m_pstBLERPredictionTable=pEPS2BLER1;


	f1.Close();

	CheckTheInputs();
}

////////////////////////////////////////////////////////////////////////////
//
//	TITLE:	Getting Data Rate from C/I
//
//	PURPOSE:通過查速率估計表,獲得適合的數據速率、調制階數和等效編碼速率,
//			參數為分組長度和C/I值
//
//	SAMPLE CALL
//			CLinkPrediction* pLink;
//			RATE2CI_TYPE* pRATE2CI;
//			pRATE2CI=pLink->GetEPDataRate(1536,3);
//
//	INPUTS:	iPacketSize	 -- the length of the packet
//							should be given precisely and only these 4
//							values are legal:
//							3072, 1536, 768, 384
//			fC2I		 --	the C/I 
//
//	OUTPUTS:pRATE2CI	--	a structure body that contains the data rate,
//							the effective coding rate, the modulation
//							function, and the slot number.
//
//	CALLED BY FUNCTIONS:
//			CDataMs::RatePrediction()
//
//	CALLING FUNCTIONS:
//
//	AUTHOR:	Ouyang Hui
//
//	DATE:	01/04/04
//
//	MODIFICATIONS SINCE 01/04/04:
//			01/04/05 Ouyang Hui 
//				Modify the process when the input C/I is too slow:
//				If this happens, the function would return NULL.
//
//			01/04/06 Ouyang Hui
//				Modify the process in the second level of the table
//
//			01/04/11 Ouyang Hui
//				Modify a bug in the comparison of C/I
//
//			01/05/23 Ouyang Hui
//				In the previous version, the function get the nearest point
//				that must have LOWER C/I than the input. This may make the
//				PER too low and reduce the throughput. So I modify the 
//				algorithm to find the nearest point that can have higher or
//				lower C/I than the input.
//				RESULT: the throughput is HIGHER!
//
////////////////////////////////////////////////////////////////////////////
RATE2CI_TYPE* CLinkPrediction::GetEPDataRate(int iChannelType,float fC2IdB,long lDataQueueSize)
{
	EPS2CI_TYPE* tempEPS2CI;
	RATE2CI_TYPE* tempRATE2CI;
	int iEPSize,iPacketLength;
	float fCIdB,fLastCIdB=(float)0.0;
	double fC2INeededdB,fPowerMargindB,fSPDCCHSlotC2I,fPDCHSlotC2I,fPDCHSlotC2IdB;
	int i,j,k,l;
	bool bIsDataRateDetermined=false;

	//find in the first level of the table

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品理论在线观看| 欧美亚洲一区二区三区四区| 亚洲一区在线视频| 欧美国产一区在线| 国产精品免费看片| 亚洲精品一区二区三区99| 欧美天堂亚洲电影院在线播放| 欧美综合一区二区| 色综合色综合色综合 | 日韩精品专区在线影院观看| 欧美日韩欧美一区二区| 色悠久久久久综合欧美99| 成+人+亚洲+综合天堂| 色综合天天在线| 99久久精品国产观看| 欧美日韩精品系列| 777色狠狠一区二区三区| 91国内精品野花午夜精品 | 免费观看在线综合| 久久成人18免费观看| 日韩av网站免费在线| 亚洲欧美日韩一区| 亚洲午夜免费视频| 亚洲成人久久影院| 亚洲影视在线观看| 国产一区二区三区四区五区入口| 激情av综合网| 成人精品gif动图一区| 成人av资源在线| 91麻豆成人久久精品二区三区| 色狠狠综合天天综合综合| 色一区在线观看| 欧美日韩国产三级| 欧美片网站yy| 国产欧美日韩另类一区| 亚洲天堂免费看| 亚洲日本va午夜在线影院| 日韩国产在线一| 久久av老司机精品网站导航| 国产在线精品免费| 在线这里只有精品| 337p粉嫩大胆色噜噜噜噜亚洲| 成人在线综合网| 911精品国产一区二区在线| 精品久久久网站| 国产拍揄自揄精品视频麻豆| 亚洲在线中文字幕| 久久成人免费网站| www.日本不卡| 精品免费日韩av| 国产精品对白交换视频| 久久国产剧场电影| 色婷婷综合视频在线观看| 日韩天堂在线观看| 一区二区三区高清| 色呦呦日韩精品| 日韩欧美一区电影| 亚洲欧洲99久久| 久久99深爱久久99精品| 色综合久久综合| 欧美日韩视频在线第一区| 久久色成人在线| 日韩激情一二三区| 欧美日韩国产高清一区二区三区 | 亚洲精品免费看| 国产成人综合自拍| 欧美肥妇毛茸茸| 亚洲欧美影音先锋| 99精品视频一区二区| 精品乱码亚洲一区二区不卡| 亚洲一区二区三区不卡国产欧美| 91社区在线播放| 亚洲国产精华液网站w| 日本怡春院一区二区| 欧美日韩国产综合一区二区| 椎名由奈av一区二区三区| 成人免费毛片片v| 久久久欧美精品sm网站| 日本亚洲三级在线| 欧美成人在线直播| 久久国内精品视频| 日韩午夜中文字幕| 国内精品不卡在线| 2023国产精品| 日本欧美大码aⅴ在线播放| 欧美一区二区三区播放老司机| 亚洲欧美视频在线观看视频| 一区二区欧美在线观看| 色婷婷久久99综合精品jk白丝| 国产精品视频看| 成人激情免费网站| 国产精品国产三级国产aⅴ入口| 国产91精品一区二区麻豆亚洲| 精品剧情在线观看| 日本aⅴ免费视频一区二区三区| 欧美视频在线一区二区三区| 一区二区三区在线视频观看58| 成人国产亚洲欧美成人综合网| 欧美国产成人在线| 波多野结衣中文一区| 亚洲欧美日本韩国| 欧美自拍丝袜亚洲| 日本亚洲视频在线| 精品国产一区二区三区av性色| 欧美a级一区二区| 日本一区二区三区在线观看| 成人国产精品免费观看| 国产精品萝li| 在线这里只有精品| 日韩成人av影视| 国产日韩欧美精品一区| 不卡的av在线| 亚洲一区二区偷拍精品| 精品国产露脸精彩对白| jvid福利写真一区二区三区| 亚洲天堂中文字幕| 亚洲精品一线二线三线| 成人高清伦理免费影院在线观看| 樱花影视一区二区| 精品欧美久久久| 91在线免费播放| 免费高清在线一区| 欧美一级二级在线观看| 91在线看国产| 毛片av中文字幕一区二区| 伊人夜夜躁av伊人久久| 欧美成人精品高清在线播放| 成人aaaa免费全部观看| 九一九一国产精品| 一区二区视频免费在线观看| 欧美精品一区二区不卡| 91在线播放网址| 麻豆精品视频在线观看| 亚洲视频电影在线| 精品国产一区二区在线观看| av午夜精品一区二区三区| 青青草成人在线观看| 亚洲一区二区三区中文字幕 | 精品日韩一区二区三区| 在线观看国产一区二区| 国产精品99久久久久久宅男| 亚洲一区二区三区四区在线 | 久久精品夜色噜噜亚洲aⅴ| 欧美一区二区女人| 在线精品视频免费播放| 成人午夜私人影院| 成人污污视频在线观看| 老司机免费视频一区二区| 亚洲一区二区三区爽爽爽爽爽| 国产日韩高清在线| 日韩小视频在线观看专区| 91精品国产综合久久香蕉麻豆 | 狠狠色综合日日| 一区二区三区在线免费| 亚洲伦在线观看| 久久午夜国产精品| 国产欧美视频一区二区| 欧美xxxxxxxx| 欧美一区二区三区啪啪| 日韩一二三区视频| 51精品久久久久久久蜜臀| 欧美一区二区三区思思人| 欧美日韩一区不卡| 欧美影院一区二区| 欧美一区二区三区四区视频| 欧美日韩亚洲高清一区二区| 欧美精品久久99| 欧美精品亚洲二区| 欧美日韩一级视频| 欧美一区二区视频观看视频| 这里只有精品视频在线观看| 日韩视频免费观看高清完整版| 777色狠狠一区二区三区| 欧美麻豆精品久久久久久| 日韩视频123| 欧美精品一区二区久久婷婷 | www国产精品av| 国产亚洲欧美日韩在线一区| 精品欧美黑人一区二区三区| 国产日韩欧美精品综合| 亚洲欧洲精品成人久久奇米网| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲视频一区二区在线| 一区二区三区不卡视频| 久久精品国产77777蜜臀| 韩国女主播一区二区三区| 99这里都是精品| 欧美伦理电影网| 欧美日韩mp4| 国产精品女上位| 亚洲国产一二三| 国产99久久久国产精品免费看 | 九一久久久久久| 91在线免费视频观看| 3751色影院一区二区三区| 国产蜜臀av在线一区二区三区| 一区二区在线观看免费视频播放| 亚洲裸体xxx| 国产乱码精品一区二区三| 色综合久久久久久久|