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

📄 channel.c

📁 一个C语言写的信道代码
💻 C
字号:
#include <stdio.h>
#include <math.h>

#define CHN_CFG 0.8
#define MAP_CFG 4
#define block_size 7493
#define SRC_CFG_NUM 7
#define pi 3.14159265

FILE *pmap,*preceive;
int main(int argc,char ** argv)
{
	int i,k;
	int s,block_n;
	int IQ;
	float rand1,rand2,sigma;
	double gauss,noise,r;
	char *map_file,*receive_file;

	sigma=CHN_CFG;
	map_file="ldpcmap.case0";
	receive_file="ldpcrec.case0";

	pmap=fopen(map_file,"r");
	preceive=fopen(receive_file,"w");
	//printf("************\n");

	if(MAP_CFG==1)
	{
		srand(time(0));                      
		for(block_n=0;block_n<SRC_CFG_NUM;block_n++)
		{
			for(i=0;i<block_size;i++)
			{
				fscanf(pmap,"%d",&s);
				rand1=(float)rand()/2147483647;
					//printf("rand1=%f\n",rand1);
				rand2=(float)rand()/2147483647;
				gauss=sqrt(-2.0*log(rand1))*cos(2.0*pi*rand2);
					//printf("gauss=%+7.3f\n",gauss);
				noise=sigma*gauss;
					//printf("s=%2d   noise=%+7.3f\n",s,noise);
				r=s+noise;
					//printf("  r=%+7.3f",r);
				fprintf(preceive,"%+7.3f",r);
			}
			fprintf(preceive,"\n");
		}
	}
	if(MAP_CFG==4)
	{
		for(block_n=0;block_n<SRC_CFG_NUM;block_n++)
		{
			for(k=0;k<((block_size/6+1)*2);k++)
			{
				fscanf(pmap,"%d",&IQ);
				//printf("block_n=%d  k=%d  IQ=%3d\n",block_n,k,IQ);
				rand1=(float)rand()/2147483647;
				rand2=(float)rand()/2147483647;
				gauss=sqrt(-2.0*log(rand1))*cos(2.0*pi*rand2);
				noise=6*sigma*gauss;
				r=IQ+noise;
				fprintf(preceive,"%+8.3f",r);
			}
			fprintf(preceive,"\n");
		}
	}
	return(0);
}

⌨️ 快捷键说明

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