graymap16qam.c

来自「该文件包内包含了一个16QAM调制解调程序」· C语言 代码 · 共 55 行

C
55
字号
/*
***********************************************************************
ANSI C source code
filename:
	GrayMap16QAM.c
abstract:
	to perform the Gray Mapping
author:
	Shen Ke
version:
	V 1.0
***********************************************************************
*/

#include "QAMSoftDem.h"
#include "math.h"
#include "stdio.h"

int GrayMap16QAM (int *inbit,int bitlen,double *out_real,double *out_img)
{
	int inpos = 0;
	int outpos = 0;
	int site_r,site_i;	
	int m = 4;
	double GrayMap[4];
	GrayMap[0] =  1/(sqrt(10)); 
	GrayMap[1] =  3/(sqrt(10));
	GrayMap[2] = -1/(sqrt(10)); 
	GrayMap[3] = -3/(sqrt(10));    // set bitSNR=1,for Psingnal=4*Pbit
	
	if (bitlen%m) {
		printf("Wrong bit length!");
		return 0;
	}
	
	while (inpos<bitlen) {
		site_r = 0;
		site_i = 0;
		if (*(inbit+inpos))  site_r +=2;
		inpos++;
		if (*(inbit+inpos))  site_i +=2;
		inpos++;
		if (*(inbit+inpos))  site_r +=1;
		inpos++;
		if (*(inbit+inpos))  site_i +=1;
		inpos++;
		
		*(out_real+outpos) = GrayMap[site_r];
		*(out_img+outpos) = GrayMap[site_i];
		outpos++;
		
	}
	
	return outpos;
}

⌨️ 快捷键说明

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