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