16qamdemode.c

来自「在无线网络的接收机端」· C语言 代码 · 共 68 行

C
68
字号
#include"AWGN.h"
#include"math.h"
#define PI 3.14159

int LLR(double receive)
{
	double temp;
	double temp1;
	int i;
	int j;

	double s[4]={-3/sqrt(10),-1/sqrt(10),3/sqrt(10),1/sqrt(10)};
	
	temp1=receive-s[0];
	temp1*=temp1;
	j=0;

	for(i=1;i<4;i++)
	{
		temp=receive-s[i];
		temp*=temp;
		if(temp1>temp)
		{
			temp1=temp;
			j=i;
		}
	}
	return j;
}

void Demode(double *out_I,double *out_Q,double *outbit,int len)
{
	int inpos=0;
	int outpos=0;
	int Is=0;
	int Qs=0;
	while(inpos<(int)(len/4))
	{
		Is=LLR(out_I[inpos]);
		Qs=LLR(out_Q[inpos]);
		inpos++;
		switch(Is){
		case 0: *(outbit+outpos)=0;*(outbit+outpos+1)=0;break;
		case 1: *(outbit+outpos)=1;*(outbit+outpos+1)=0;break;
		case 2: *(outbit+outpos)=0;*(outbit+outpos+1)=1;break;
        case 3: *(outbit+outpos)=1;*(outbit+outpos+1)=1;break;
		}
		outpos+=2;
		switch(Qs){
		case 0: *(outbit+outpos)=0;*(outbit+outpos+1)=0;break;
		case 1: *(outbit+outpos)=1;*(outbit+outpos+1)=0;break;
		case 2: *(outbit+outpos)=0;*(outbit+outpos+1)=1;break;
        case 3: *(outbit+outpos)=1;*(outbit+outpos+1)=1;break;
		}
		outpos+=2;
	}
}










⌨️ 快捷键说明

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