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

📄 bch编译码.c.txt

📁 运用C语言来进行bch码的译码算法分析。
💻 TXT
字号:
BCH(15,5)编译码C程序

voidLinCoding(void)//BCH(15,5)编码
{
char i,aaa;
//char g[11]={1,0,1,0,0,1,1,0,1,1,1};
char a[10]={0,0,0,0,0,0,0,0,0,0};
char u[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//移位寄存器输入序列
for(i=0;i<5;i++)          
{
u[10+i]=OrigSeq;
}
//求余式得监督序列
for(i=0;i<15;i++)          
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
//得到系统码序列
for(i=0;i<10;i++)          
{
LinCodSeq=a;
}
for(i=0;i<5;i++)          
{
LinCodSeq[10+i]=OrigSeq;
}
for(i=0;i<15;i++)          
{
if(i%5==0&&i!=0)
printf(",";
printf("%d",LinCodSeq);
}
printf("                                           15,5,3)Bian Ma\n\n";
}

voidLinRecoding(void)//BCH(15,5)译码
{
char i,j,k,aaa;
//char g[11]={1,0,1,0,0,1,1,0,1,1,1};
char a[10]={0,0,0,0,0,0,0,0,0,0};
char u[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//计算伴随式S(X),由伴随式并用修正捕错法求错误图样
for(j=0;j<16;j++)
{
if(j==0)
{
for(i=0;i<15;i++)
{
u=LinCodSeq;
}
for(i=0;i<15;i++)       //计算初始伴随式
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
}
else
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
for(i=0;i<10;i++)
a=0;
for(i=0;i<15;i++)       //计算移位后伴随式   
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
}
aaa=0;
for(i=0;i<10;i++)    //计算伴随式重量
aaa=aaa+a;
if(aaa<=3)//捕错译码
{
for(i=0;i<10;i++)
{
LinError=a;
}
for(i=0;i<15;i++)
{
u=u+LinError;
if(u==2)
u=0;
}
for(k=j;k<15;k++)
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
}
for(i=0;i<15;i++)
LinCodSeq=u;
for(i=0;i<5;i++)
OrigSeq=LinCodSeq[10+i];
break;
}
aaa=!a[0]+a[1]+!a[2]+a[3]+a[4]+!a[5]+!a[6]+a[7]+!a[8]+!a[9];
if(aaa<=2)//捕错译码修正
{
LinError[0]=!a[0];
LinError[1]=a[1];
LinError[2]=!a[2];
LinError[3]=a[3];
LinError[4]=a[4];
LinError[5]=!a[5];
LinError[6]=!a[6];
LinError[7]=a[7];
LinError[8]=!a[8];
LinError[9]=!a[9];
LinError[10]=1;
for(i=0;i<15;i++)
{
u=u+LinError;
if(u==2)
u=0;
}
for(k=j;k<15;k++)
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
}
for(i=0;i<15;i++)
LinCodSeq=u;
for(i=0;i<5;i++)
OrigSeq=LinCodSeq[10+i];
break;
}
}
for(i=0;i<5;i++)          
{
printf("%d",OrigSeq);
}
printf("                                                       15,5,3)Yi Ma\n\n";
for(i=0;i<46;i++)          
{
if(i%5==0&&i!=0)
printf(",");
printf("%d",Error);
}
printf("     :Cuo Wu Tu Yang B\n\n");
for(i=0;i<15;i++)          
{
if(i%5==0&&i!=0)
printf(",");
printf("%d",LinError);
}
printf("                                           :Cuo Wu Tu Yang A\n\n");
}  
 
2005-3-1 20:34 #1 
 

⌨️ 快捷键说明

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