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

📄 qam2.c

📁 c语言仿真qam程序
💻 C
字号:
#include <stdio.h>
#include <math.h>

#include "gauss.c"
#include "bernoulli.c"
#include "bit_decide.c"

#define M 50000

main()
{
	int map(int,int);

	int flag=0;
	int bit_demod[4];
	int i;
	int p;
	int real;
	int image;
	int error_bit=0;
	int error_symbol=0;
	int bit_original[4];
	double mean=0;
	double sigma;
	double real_receive;
	double imagel_receive;
	double real_noise;
	double image_noise;
	double temp;

	long int seed=13579;
	
	FILE *fp_error_symbol,*fp_error_bit;
	fp_error_symbol=fopen("error_symbol.dat","wb+");
	fp_error_bit=fopen("error_bit.dat","wb+");


for(sigma=0;sigma<2;sigma=sigma+0.05)
{	for(p=0;p<M;p++)
	{
		for(i=0;i<4;i++)
		bit_original[i]=bernoulli(0.5,&seed);

//mapping
	real=map(bit_original[0],bit_original[1]);
	image=map(bit_original[2],bit_original[3]);	

//+noise
	real_noise=gauss(mean,sigma,&seed);
	image_noise=gauss(mean,sigma,&seed);
	real_receive=real+real_noise;
	imagel_receive=image+image_noise;
	
  for(i=0;i<4;i++)
  {
	  
		bit_demod[i]=detect(real_receive,imagel_receive,i+1);
		if(bit_demod[i]!=bit_original[i])
		 { error_bit++;flag=1;} 
 
  }
   error_symbol=error_symbol+flag;
  flag=0;
//***************************************
//for(i=0;i<4;i++)
//	printf("%d",bit_original[i]);
//
//printf("\t");
//for(i=0;i<4;i++)
//printf("%d",bit_demod[i]);
//
//
//printf("\n");
//***************************************

	}
	 printf("%f %f\n",error_bit/(M*4.0),(double)error_symbol/M);
	 
	 temp=(double)error_symbol/M;
	 fwrite(&temp,sizeof(double),1,fp_error_symbol);
	 temp=error_bit/(M*4.0);
	 fwrite(&temp,sizeof(double),1,fp_error_bit);
	 error_bit=0;
	 error_symbol=0;
}
}


int map(int bit_original,int b)
{
	int result_mapped;
	if(bit_original==0&&b==0)
		result_mapped=-3;
	else if(bit_original==0&&b==1)
		result_mapped=-1;
	else if(bit_original==1&&b==1)
		result_mapped=1;
	else  if(bit_original==1&&b==0)
		result_mapped=3;
	return result_mapped;
}


	

⌨️ 快捷键说明

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