📄 main.c
字号:
////////////////////////////////////////////
#include "stdio.h" //
#include "math.h" //
#include "malloc.h" //
#include "stdlib.h" //
#include "time.h" //
//
#include "parameter.h" //
////////////////////////////////////////////
void rand_data(int);
void turbo_code(char *,char *);
void initialize_turbo_code();
void initialize_turbo_decode();
void qpsk_noise(float *,float);
void char2float(char *,float *);
void turbo_decode(float *,char *);
void main()
{
int m,num,num_dot;
float snrdb=100.0,error_rate=0.0,h=0;
//开辟内存
(char *)channel_output=(char *) malloc (fra_long * 3 * sizeof(char));
(char *)interleave_out=(char *) malloc (fra_long * sizeof(char));
(float *)interleavefloat_out=(float *) malloc (fra_long * sizeof(float));
srand((unsigned)time(NULL));
(char *)decode_output=(char *) malloc (fra_long * sizeof(char));
(float *)output_float=(float *) malloc (fra_long * 3 * sizeof(float));
(float *)l_ex=(float *) malloc (fra_long * sizeof(float));
(float *)rec_s=(float *) malloc (fra_long*2 * sizeof(float));
(float *)temp_max=(float *) malloc ((fra_long+1) * sizeof(float));
///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
initialize_turbo_code();
(char *)regist=(char *) malloc (restrict_l * sizeof(char));
initialize_turbo_decode();
for(num_dot=0;num_dot<dot_num;num_dot++)
{
snrdb=snrdb+0.5;
for(num=0;num<1;num++)
{
rand_data(fra_long);
turbo_code(channel_input,channel_output);
char2float(channel_output,output_float);
qpsk_noise(output_float,snrdb);
turbo_decode(output_float,decode_output);
for(m=0;m<fra_long;m++)
if (channel_input[m]!=decode_output[m])
h=h+1.0;
}
error_rate=h/(fra_num*fra_long);
printf("%.9f ",error_rate);
h=0.0;
}
////////////////////////////////////////释放内存
free (channel_output);
free (interleave_out);
free (regist);
free (output_float);
free (decode_output);
free (next_state);
free (last_state);
free (next_out);
free (last_out);
free (l_ex);
free (rec_s);
free (alpha_a);
free (beta_b);
free (gamma);
free (LLR);
free (LL_inter);
free (temp_max);
free (temp_one);
free (temp_zero);
free (interleavefloat_out);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -