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

📄 main.c

📁 c语言编写的一个turbo码的程序。采用了高斯信道QPSK调制
💻 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 + -