📄 rake.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 + -