卷积码编码和维特比译码_第1页
卷积码编码和维特比译码_第2页
卷积码编码和维特比译码_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、卷积码编码维特比译码实验设计报告SUN一、实验目的掌握卷积码编码和维特比译码的基本原理,利用了卷枳码的特性,运用网格图和回溯以 得到译码输出。二、实验原理1. 卷枳码是由连续输入的信息序列得到连续输出的已编码序列。其编码器将k个信息码元编 为n个码元时,这n个码元不仅与当前段的k个信息有关,而且与前面的(m-1)段信 息 有关(m为编码的约束长度)。2. 般地,最小距离d表明了卷积码在连续m段以内的距离特性,该码可以在m个连续码 流内纠正(d-l)/2个错误。卷积码的纠错能力不仅与约束长度有关,还与采用的译码方式有关。3. 维特比译码算法基本原理是将接收到的信号序列和所有可能的发送信号序列比较

2、,选择 其中汉明距离最小的序列认为是当前发送序列。卷积码的Viterbi译码是根据接收码字序列 寻找编码时通过网格图最佳路径的过程,找到最佳路径即完成了译码过程,并可以纠正接收码 字中的错误比特。4. 所谓“最佳”,是指最大后验条件概率:P(C/R) = maxP(Cj/R), 一般来说,信道模型并不 使用后验条件概率,因此利用Beyes公式、根据信道特性出结论:max P ( Cj/ R)与max P ( R/ Cj)等价。考虑到在系统实现中往往采用对数形式的运算,以求降低运算量,并且为求运算值 为整数加入了修正因子 al、a2。令 M ( R/ Cj) = log P ( R/ Cj) =

3、 S al (log P( Rm/ Cmj) + a2) o其中,M是组成序列的码字的个数。因此寻找最佳路径,就变成寻找最大M( R/ Cj), M(R/Cj)称为Cj的分支路径量度,含义为发送Cj而接收码元为R的似然度。5. 卷枳码的Viterbi译码是根据接收码字序列寻找编码时通过网格图最佳路径的过程,找到最 佳路径即完成了译码过程 并可以纠正接收码字中的错误比特。三、实验代码#in cludeoinclude “"#define N 7include “"#inelude <>#in cludeo#define randomize() srand(unsi

4、gned)time(NULL)encode(unsigned int * symbols, /* 编码输出沐/unsigned int *data,厂编码输入*/unsigned int nbytes, /*nbytes=n/16,n 为实际输入码字的数目 */unsigned int startstate厂定义初始化状态沐/et=O;for(l=0;l<4;l+)statelO.met=trandista nce(*viterbiinputj nitialstatej);statelO.value=tra nin put(i nitialstatej);statelO.last=NUL

5、L;viterbiinput+;厂扩展第一步幸存路径审for(t=l;t<N;t+)for(p=0;p<4;p+)statep t. met=state 0 t-1 .met+tra ndistance(*viterbiinput/O/p);statept.value=tra ninput(0,p);statept.last=&state0t-l;for(q=0;q<4;q+)if(stateq t-1.met+tra ndista nce( * viterbiinput/qzp)<statep t .met)statept.met=stateq t-1.met

6、+tra ndista nce(Witerbiinputq,p);statept.value=tra ninput(q,p);statept.last=&stateqt-l;viterbii nput+;/*计算出剩余的幸存路径*/r=stateON-l.met;/*找出n步后度量值最小的状态准备回溯路由*/g=&stateON-l;for(u=N;u>0;u-)/*向前递归的找出最人似然路径*/*(viterbioutput+(u-l)=g->value;g=g->last;/* for(u=0;u<&u+)*(viterbioutput+u)

7、=stateu2.met; */*此行程序可用于检测第 n 列的度量值*7void decode(unsigned int *input, int *output,int n)int viterbiinput100);int j;for(j=0;j<n+2;j+)viterbiinputj=(inputj*2«l) | inputj*2+l; viterbi(Ozviterbiinput,output);void main()unsigned intencodeinput100,wrong10=OQO,0000000,encodeoutput100;int n=5/i/m,j=

8、0/decodeinput100/decodeoutput100;ran domize();for(i=0; i<n; i+)encodeinputi=ra nd()%2;en codei nput n= en codei nputn+l=0;en code(encodeoutput,e ncodei nputn+2,0);printf("the input of encoder is :n"); /信息源输入的信息码(随机产生)for(i=0;i<n; i+)printf(,%2d,/encodeinputi);printfCV);printf("t

9、he output of encoder is :n"); /编码之后产生的卷积码for(i=0;i<(n+2)*2;i+)printf(,%2d,encodeoutputi);if(i%20=19)printf(S);printfC'Xn");而产生的错误码printf(Mplease input the number of the wrong bitnH); /信道传输收到干扰scanf(”d",&m);printf(Mplease input the positions of the wrong bit(0-9)nH);for(i=0;

10、i<m;i+) scanf(,%d"/&wrongm);if(e ncodeoutputwro ngm=0)encodeoutputwr on gm=l;elseencodeoutputwr on gm=0;prin tf(Hthe in put of decoder is :n”);for(i=0;i<(n+2)*2;i+) printf(,%2d"/encodeoutputi);if(i%20=19)printf(”n”);printfCVT);decode(encodeoutput,decodeoutput, n+2);printf(nthe output of decoder is :nH);for(i=0;i< n;i+)printf(,%2d',/decodeoutputi);printfCV');for(i=0;i< n;i+)if(en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论