📄 coder.c
字号:
////////////////////////////////////////////
#include "stdio.h" //
#include "math.h" //
#include "malloc.h" //
#include "stdlib.h" //
#include "time.h" //
#include "parameter.h" //
////////////////////////////////////////////
char decision_m(int);
void RCS_CODE(char *,char *,char);
void interleaver(char *,char *,char);
///////////////////////////////////随机产生一帧数据
void rand_data(int frame_long)
{
int i,j;
for (i=0;i<frame_long;i++)
{
j=rand()%2;
if (j==0)
channel_input[i]=0;
else
channel_input[i]=1;
}
}
//RCS编码的初始化
void initialize_turbo_code()
{ char lm,ln;
int m,n;
if(G1/100<8 && (G1/10-G1/100*10)<8 && (G1-G1/10*10)<8 &&
G2/100<8 && (G2/10-G2/100*10)<8 && (G2-G2/10*10)<8)
{
if(G1>=178 || G2>=178)
printf("error: 约束长度超过限定7");
}
else
printf("error: 参数设置错误");
m=G1/100*8*8+(G1/10-G1/100*10)*8+G1-G1/10*10;
n=G2/100*8*8+(G2/10-G2/100*10)*8+G2-G2/10*10;
lm=decision_m(m);
ln=decision_m(n);
restrict_l=(lm>ln)?lm:ln;
}
////////////////////////////////////////RCS编码
void turbo_code(char *a,char *b)
{ short i;
for(i=0;i<fra_long;i++)
b[3*i]=a[i];
RCS_CODE(a,b,1);
/*
for(i=0;i<fra_long;i++)
printf("%d,,",a[i]);
printf("\n");*/
interleaver(a,interleave_out,0);
/* interleaver(interleave_out,a,1);
for(i=0;i<fra_long;i++)
printf("%d,,",a[i]);
for(i=0;i<fra_long;i++)
printf("%d",interleave_out[i]);
printf("\n");*/
RCS_CODE(interleave_out,b,2);
// for(i=0;i<fra_long;i++)
// printf("%d",b[3*i+2]);
// printf("\n");
// for(i=0;i<fra_long;i++)
// printf("%d",interleave_out[i]);
}
/////////////////////////////change from char to float
void char2float(char *a,float *b)
{
short i;
for(i=0;i<fra_long*3;i++)
{
if(a[i]==1)
b[i]=1;
else
b[i]=-1;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -