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

📄 turbo_code.cpp

📁 3GPP标准Turbo码编码译码仿真Matlab6.5及VC6.0源代码
💻 CPP
字号:
//**PCCC型Turbo码编码,由约束长度为3,**//
//**生成矩阵为(7,5)的两个相同的递归系统卷积码作为分量码**//
#include<stdio.h>
#include<math.h>
#define SIZE 9
#define L 3
int RSC(int a,int *t1,int *t2)  //分量编码器//
{int b,c;
 b=a^*t1^*t2;
 c=b^*t2;
 *t2=*t1;
 *t1=b;
 return(c);
}
void main()
{int u[SIZE],u1[SIZE],c0[SIZE],c1[SIZE],c2[SIZE],c[SIZE][2];
int i,j,*p1,*p2,k,k1,k2;
k1=0;k2=0;
p1=&k1;p2=&k2; k=0;
printf("input the information stream:\n");
for (i=0;i<SIZE;i++)
   scanf("%d",&u[i]);
printf("\n");
for(i=0;i<SIZE;i++)    //未经交织的信息序列经分量编码器后的系统输出和校验输出//
{c0[i]=u[i];
   c1[i]=RSC(u[i],p1,p2);
  }
int interlace[L][L];   //以下为交织器//
for(i=0;i<L;i++)
   for(j=0;j<L;j++)
      {interlace[i][j]=u[k];
k++;
}
k=0;
for(j=0;j<L;j++)
   for(i=0;i<L;i++)
      {u1[k]= interlace[i][j]; 
       k++;
      }
p1=&k1;p2=&k2;     //移位寄存器置零//
for(i=0;i<SIZE;i++)    //交织后的信息序列经分量编码器后的校验输出//
c2[i]=RSC(u1[i],p1,p2);
for(i=0;i<SIZE;i++)    //经删余矩阵复接//
   for(j=0;j<2;j++)
      if(j==0)
c[i][j]=c0[i];
      else
 {if(i%2==0)
            c[i][j]=c1[i];
          else
             c[i][j]=c2[i];
           }
for(i=0;i<SIZE;i++)    //输出编码后的码字//
   {for(j=0;j<2;j++)
      printf("%d",c[i][j]);
    printf("\t");
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -