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

📄 rake.cpp

📁 扩展的直序扩频系统
💻 CPP
字号:
#include "Common.h"


void DeSpread(IN complex *MatchResult, IN float *Barker, IN int k, OUT complex *RxSymbol)
{
	int i,j;

	memset(RxSymbol, 0, sizeof(complex)*PSDU_LENGTH_SYM);
	
	for(i=0; i<PSDU_LENGTH_SYM; i++)
	{
		for(j=0; j<Ns; j++)
		{
			RxSymbol[i] = ComplexAdd(RxSymbol[i], ComplexMulR( MatchResult[k+i*Ns+j], *(Barker+j)));
		}
	}
}

void Rake(IN complex *MatchResult, IN int length, OUT complex *RakeResult)
{
	int i,k;
	complex Symbol[PSDU_LENGTH_SYM] = {0.f, 0.f};
	complex H[MULTIPATH_NUM] = {0.f, 0.f};
	float *BarkerCode;
	FILE *fpt_channel;
	
	BarkerCode = (float *)calloc(Ns, sizeof(float));    //可当作数组使用!
	memset(BarkerCode, 0, Ns*sizeof(float));
	Gen_Fuction(BarkerCode);

	#if (MULTIPATH_flag == 1)
		#if (IDEAL_ESTIMATION == 1)		
			fpt_channel = fopen("Ideal_Mutichannel.dat", "rb");
			fread(H, sizeof(complex), MULTIPATH_NUM, fpt_channel);
			fclose(fpt_channel);
        #else
			fpt_channel = fopen("CE_channel.dat", "rb");
			fread(H, sizeof(complex), MULTIPATH_NUM, fpt_channel);
			fclose(fpt_channel);
		#endif
			
	#else     //AWGN Receiver
			H[0].real = 1.f;
			H[0].imag = 0;
	#endif	
	
	memset(RakeResult, 0, sizeof(complex)*PSDU_LENGTH_SYM);
	
	for(k=0; k<MULTIPATH_NUM; k++)
	{
		DeSpread(MatchResult, BarkerCode, k, Symbol);

		for(i=0; i<PSDU_LENGTH_SYM; i++)
		{
			RakeResult[i] = ComplexAdd(RakeResult[i], ComplexMul(Symbol[i], ComplexConj(H[k])));
		}		
	}
	free(BarkerCode);
	
}

⌨️ 快捷键说明

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