?? turbo_code.cpp
字號:
//**PCCC型Turbo碼編碼,由約束長度為3,**//
//**生成矩陣為(7,5)的兩個(gè)相同的遞歸系統(tǒng)卷積碼作為分量碼**//
#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++) //未經(jīng)交織的信息序列經(jīng)分量編碼器后的系統(tǒng)輸出和校驗(yàn)輸出//
{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++) //交織后的信息序列經(jīng)分量編碼器后的校驗(yàn)輸出//
c2[i]=RSC(u1[i],p1,p2);
for(i=0;i<SIZE;i++) //經(jīng)刪余矩陣復(fù)接//
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");
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -