📄 main.c
字号:
#include"AWGN.h"
#include"math.h"
#include"stdio.h"
#include"malloc.h"
#include "stdlib.h"
void main()
{
struct AWGN seed,gauss;
double *inbit,*outbit;
int len=10000;
int erro=0;
double pb;
int i,j,k;
double *out_I;
double *out_Q;
double *out_Is;
double *out_Qs;
inbit=calloc(len,sizeof(double));
outbit=calloc(len,sizeof(double));
out_I=calloc((int)(len/4),sizeof(double));
out_Q=calloc((int)(len/4),sizeof(double));
out_Is=calloc((int)(len/4),sizeof(double));
out_Qs=calloc((int)(len/4),sizeof(double));
s1=rand();
s2=rand();
seed.ix=3221;
seed.iy=140;
seed.iz=19;
/*seed.rate=3;
seed.I_sigma=0.2;
seed.sigma=sqrt(1/seed.I_sigma);*/
gauss.ix=30323;
gauss.iy=173;
gauss.iz=13;
gauss.snr=8; //singal SNR
gauss.rate = 4;
gauss.I_sigma=2*(gauss.rate)*(pow(10.0,(gauss.snr/10)));
gauss.sigma=sqrt(1/gauss.I_sigma);
for(i=0;i<=len-1;i++)
{
inbit[i]=generate_binary_source();
/*printf("%f\n",inbit[i]);*/
}
Graymap16QAM(inbit,out_I,out_Q,len);
awgn_channel(out_I,out_Is,&gauss,(int)(len/4));
awgn_channel(out_Q,out_Qs,&gauss,(int)(len/4));
Demode(out_Is,out_Qs,outbit,len);
/*for(j=0;j<=(int)((int)(len/4)-1);j++)
{
printf("%f %f\n",out_I[j],out_Q[j]);
}
for(k=0;k<=len-1;k++)
{
printf("%f\n",outbit[k]);
}
printf("%n%n");*/
for(j=0;j<=len-1;j++)
if(outbit[j]!=inbit[j])erro++;
pb=(double)erro/10000.0;
printf("erro=%d",erro);
printf("pb=%f",pb);
printf("sigma=%f",gauss.sigma);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -