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

📄 energy.cpp

📁 IDMA的基本的C++的仿真图
💻 CPP
字号:
#include <math.h>
#include "define.h"

const int		_NUser		= NUSER;
const int		_SpreadLen	= SPREADLEN;

extern double		H[NUSER], H2[NUSER];

void EnergyProfile( )
{
	int nuser;
	double tmp;

	// All users use the same energy level, i.e. no energy allocation.
	for( nuser=0; nuser<_NUser; nuser++ ) H2[nuser] = 1;

	// The following energy levels are for the uncoded IDMA system wih
	// BPSK modulation and real channel. The parameters of the system
	// are: No. of user = 64 and spreading length =16.
	//
	// For details of the energy allocation technique, please refer to
	// this paper: Li Ping and Lihai Liu, "Analysis and design of IDMA
	// systems based on SNR evolution and power allocation," in Proc.
	// VTC' 2004-Fall, Los Angeles, CA. Sept. 2004 or 
	// http://www.ee.cityu.edu.hk/~liping/Research/Conference/IDMA-PA.pdf
	//
	if( ( _NUser == 64 ) && ( _SpreadLen == 16 ) )
	{
		H2[63]	=   1.0000; //  0.000dB
		H2[62]	=   1.0000; //  0.000dB
		H2[61]	=   1.0000; //  0.000dB
		H2[60]	=   1.0000; //  0.000dB
		H2[59]	=   1.0000; //  0.000dB
		H2[58]	=   1.0000; //  0.000dB
		H2[57]	=   1.0000; //  0.000dB
		H2[56]	=   1.0000; //  0.000dB
		H2[55]	=   1.0000; //  0.000dB
		H2[54]	=   1.0000; //  0.000dB
		H2[53]	=   1.0000; //  0.000dB
		H2[52]	=   1.0000; //  0.000dB
		H2[51]	=   1.0000; //  0.000dB
		H2[50]	=   1.0000; //  0.000dB
		H2[49]	=   1.0000; //  0.000dB
		H2[48]	=   1.0000; //  0.000dB
		H2[47]	=   1.0000; //  0.000dB
		H2[46]	=   1.0000; //  0.000dB
		H2[45]	=   1.0000; //  0.000dB
		H2[44]	=   1.0000; //  0.000dB
		H2[43]	=   1.0000; //  0.000dB
		H2[42]	=   1.0000; //  0.000dB
		H2[41]	=   1.0000; //  0.000dB
		H2[40]	=   1.0000; //  0.000dB
		H2[39]	=   6.2748; //  7.976dB
		H2[38]	=   6.2748; //  7.976dB
		H2[37]	=   6.2748; //  7.976dB
		H2[36]	=   6.2748; //  7.976dB
		H2[35]	=   6.2748; //  7.976dB
		H2[34]	=   6.2748; //  7.976dB
		H2[33]	=   6.2748; //  7.976dB
		H2[32]	=   6.2748; //  7.976dB
		H2[31]	=   6.2748; //  7.976dB
		H2[30]	=   6.2748; //  7.976dB
		H2[29]	=   6.2748; //  7.976dB
		H2[28]	=   6.2748; //  7.976dB
		H2[27]	=   8.1583; //  9.116dB
		H2[26]	=   8.1583; //  9.116dB
		H2[25]	=  23.2970; // 13.673dB
		H2[24]	=  23.2970; // 13.673dB
		H2[23]	=  23.2970; // 13.673dB
		H2[22]	=  23.2970; // 13.673dB
		H2[21]	=  23.2970; // 13.673dB
		H2[20]	=  23.2970; // 13.673dB
		H2[19]	=  23.2970; // 13.673dB
		H2[18]	=  23.2970; // 13.673dB
		H2[17]	=  30.2901; // 14.813dB
		H2[16]	=  30.2901; // 14.813dB
		H2[15]	=  30.2901; // 14.813dB
		H2[14]	=  30.2901; // 14.813dB
		H2[13]	=  86.4968; // 19.370dB
		H2[12]	=  86.4968; // 19.370dB
		H2[11]	=  86.4968; // 19.370dB
		H2[10]	=  86.4968; // 19.370dB
		H2[9]	=  86.4968; // 19.370dB
		H2[8]	=  86.4968; // 19.370dB
		H2[7]	= 112.4605; // 20.510dB
		H2[6]	= 112.4605; // 20.510dB
		H2[5]	= 112.4605; // 20.510dB
		H2[4]	= 112.4605; // 20.510dB
		H2[3]	= 112.4605; // 20.510dB
		H2[2]	= 112.4605; // 20.510dB
		H2[1]	= 112.4605; // 20.510dB
		H2[0]	= 112.4605; // 20.510dB
	}

	// Normalization of the energy level of all users.
	tmp = 0;
	for( nuser=0; nuser<_NUser; nuser++ ) tmp += H2[nuser];
	for( nuser=0; nuser<_NUser; nuser++ ) H2[nuser] = ( (double) _NUser ) * H2[nuser] / tmp;

	// Produce the amplitude scaling level
	for( nuser=0; nuser<_NUser; nuser++ ) H[nuser] = sqrt( H2[nuser] );
}

⌨️ 快捷键说明

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