213卷积码编码和译码Word文档下载推荐.docx
- 文档编号:19442562
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:346.98KB
213卷积码编码和译码Word文档下载推荐.docx
《213卷积码编码和译码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《213卷积码编码和译码Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
b.更长的序列测试
三、卷积码译码原理
由有限状态移位寄存器产生的卷积码实质上是一个有限状态机。
(n,k)线性分组码的最大似然译码就是在所有合法码字中找出一个最接近接收码字的码字。
卷积码的最大似然译码法则是对于给定的接收符号序列R,找出最大可能的编码符号序列C。
维特比于1967年提出的维特比算法能够系统地去除那些不可能具有最大度量的路径排除,从而降低了最大似然译码的复杂度。
(2,1,3)卷积码的状态图
(2,1,3)卷积码的网格图
卷积码一码通常按最大似然法则一码,对二进制对称信道(BSC),它就等小于最小汉明距离译码。
在这种译码器中,把接收序列和所有可能发送序列比较,选择一个汉明距离最小的序列盘坐发送序列。
由于信息序列编码序列有着一一对应关系,这种序列和网格图的一条路径唯一对应,因此译码就是根据接收序列R在网格图上全力搜索编码器在编码时经过的路径。
四、卷积码译码器程序仿真
为了简单起见,这里仅仅提供数组长度2×
10bit的仿真程序,当然如果需要可以修改数组大小。
经过实验仿真,译码完全正确。
a.课件上接收码字111000译码101的实验
b.对应上文中的,长序列译码测试结果
c.译码与编码的区别在于容错性,如果在传输过程中有出错的比特,也应该用Viterbidecoder在一定的范围内自动纠错,得到正确的发端的编码,并翻译出发端的原码。
本报告中对于比较长的序列(>
2)进行纠错。
以课件中的例子进行仿真
R是收到的码字,C是发送方发出的正确的码字,R有2bit信息出现错误。
运行程序的到结果。
当用译码器接收正确的序列C时显示以下结果:
当接收到的序列错误时
译码结果如下:
如此时把译码结果输入上文中的编码器程序,即可得到发送方发出的正确的码字:
综上,译码程序能对于正确的较短(<
3组)的卷积码序列进行译码,得到正确的译码结果。
对于较长的序列(>
2)可以纠错,纠正后,得到正确的卷积码,然后译码得到原码。
程序仿真完全正确。
d.模拟一个完整的传输过程:
发送方输入序列11001010
输入到编码器程序中:
得到卷积码输出:
1101011111100010
若传送到接收端,由于信道的各种干扰,接收码字发生了变化,得到的接收码字:
1111011101101110
共有2bit出现错误,输入到解码器中,纠错解码后得到:
有效地纠错,解码,还原了发送方的信息。
e.进一步大量仿真得到结果:
当错误量比较多,或者比较集中时,有些时候不能有效地纠错,得到的译码结果可能也有1bit是错误的。
具体截图略。
五、编码C源程序清单
#include<
stdio.h>
stdlib.h>
shortadd3(shorta,shortb,shortc)
/*3位模二加法器*/
{
shortsum;
sum=a+b+c;
sum=sum%2;
returnsum;
}
shortadd2(shorta,shortb)
/*2位模二加法器*/
sum=a+b;
intmain()
shorta=0,b=0,c=0;
/*三个移位寄存器初始状态为0*/
intlength=0;
/*输入长度*/
shortx,y;
/*两个输出寄存器*/
shortinput[30];
/*存储输入数据的数组*/
inti;
printf("
需要输入几位数据?
"
);
scanf("
%d"
&
length);
请输入%d位数字:
\n"
length);
for(i=0;
i<
length;
i++)
{
%1hd"
input[i]);
}
卷积码输出:
c=b;
b=a;
a=input[i];
/*移位运算*/
x=add3(a,b,c);
y=add2(a,c);
%d%d\n"
x,y);
return0;
六、译码程序清单
intde(codenow)
/*短序列不纠错解码器*/
intdecode,now,code;
now=codenow%100;
code=(codenow-now)/100;
/*分离状态和接收到的码字*/
switch(now)
case10:
if(code==10)
now=01;
decode=0;
else
now=11;
decode=1;
break;
case11:
if(code==01)
now=01;
case01:
if(code==11)
now=00;
now=10;
case00:
if(code==00)
default:
error!
codenow=decode*100+now;
returncodenow;
inthanming(intx,inty)
/*计算xy两个2bit数的汉明距离*/
intx1,x2,y1,y2,sum=0;
/*分解数位*/
x2=x%2;
x1=(x-x2)/10;
y2=y%2;
y1=(y-y2)/10;
if(x1!
=y1)
sum++;
if(x2!
=y2)
voidcorrect(intcode[],intlength)
/*长序列纠错解码器*/
inti,j,m,error=0;
int*p;
intd00=0,d10=0,d01=0,d11=0;
intdz00=0,dz10=0,dz01=0,dz11=0;
/*时刻1结束时*/
intlu00[10]={0,0};
intlu10[10]={0,1};
intlu01[10]={1,0};
intlu11[10]={1,1};
intlz00[10]={0},lz10[10]={0};
intlz01[10]={0},lz11[10]={0};
d00=hanming(code[0],0)+hanming(code[1],0);
d10=hanming(code[0],0)+hanming(code[1],11);
d01=hanming(code[0],11)+hanming(code[1],10);
d11=hanming(code[0],11)+hanming(code[1],01);
for(i=2;
/*00状态路径*/
if((d00+hanming(0,code[i]))<
(d01+hanming(11,code[i])))
for(j=0;
j<
i;
j++)
lz00[j]=lu00[j];
lz00[i]=0;
dz00=d00+hanming(0,code[i]);
lz00[j]=lu01[j];
dz00=d01+hanming(11,code[i]);
/*10状态路径*/
if((d00+hanming(11,code[i]))<
(d01+hanming(00,code[i])))
lz10[j]=lu00[j];
lz10[i]=1;
dz10=(d00+hanming(11,code[i]));
lz10[j]=lu01[j];
dz10=d01+hanming(00,code[i]);
/*01状态路径*/
if((d10+hanming(10,code[i]))<
(d11+hanming(01,code[i])))
lz01[j]=lu10[j];
lz01[i]=0;
dz01=d10+hanming(10,code[i]);
lz01[j]=lu11[j];
dz01=d11+hanming(01,code[i]);
/*11状态路径*/
if((d10+hanming(01,code[i]))<
(d11+hanming(10,code[i])))
lz11[j]=lu10[j];
lz11[i]=1;
dz11=d10+hanming(01,code[i]);
lz11[j]=lu11[j];
dz11=d11+hanming(10,code[i]);
/*更新*/
d00=dz00;
d10=dz10;
d01=dz01;
d11=dz11;
for(m=0;
m<
m++)
lu00[m]=lz00[m];
lu10[m]=lz10[m];
lu01[m]=lz01[m];
lu11[m]=lz11[m];
/*最后一步,在四条路径中选择汉明距离最小的一条*/
error=d00;
p=lu00;
if(d01<
error)
error=d01;
p=lu01;
if(d10<
error=d10;
p=lu10;
if(d11<
error=d11;
p=lu11;
共有%d位错误,译码如下:
error);
*p);
p++;
intcodenow=0;
intnow=0;
/*当前状态*/
intdecode;
/*输出*/
intcode[20];
需要输入几组数据?
请输入%d组接收到的数字:
%2d"
code[i]);
/*长度大于3的用Viterbidecoder纠错过程如下,*/
if(length>
2)
correct(code,length);
/*长度小于3的直接译码*/
\n卷积码解码结果:
/*解码过程如下*/
codenow=code[i]*100+now;
codenow=de(codenow);
decode=(codenow-now)/100;
decode);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 213 卷积码 编码 译码