资源描述:
《维特比译码程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、(n,k,N)卷积码的维特比译码算法实现#include#definet_src0#definet_des1#definet_len2#definet_flag3#definet_in4usingnamespacestd;intmyn=0;intstalen=0;intmyg1[10]={0};intmyg2[10]={0};intstan0[256][2]={0};//输入0时个状态的输出intstan1[256][2]={0};//输入1时各状态的输出intstachn[256][2]={0};//状态装换表intpath[256][100]=
2、{0};//存储路径intcalpath[256]={0};//存储路径长度intmyin[24];//一次处理12次intmyout[200];//intmyoutsym=0;intpthsym;intoutfull=0;//决定是否输出inttable1[8]={1,2,4,8,16,32,64,128};voidchartobits(charch,int*bits);charbitstochar(int*bits);intcalluj(inta1,inta2,intb1,intb2);voidinitpath(void);voidselpath(inta1,in
3、ta2);voidwridata(void);voidviterbit(void);voidwritdataedn(void);voidcreatsta(void);voidmyinput(void);intmain(){myinput();creatsta();viterbit();}voidmyinput(void){inti,j;cout<<"输入编码的约束长度N:(3>myn;stalen=int(pow(2.0,myn-1));cout<<"选择默认的编码矢量则输入1,输入2则可输入其他的编码矢量"<>i
4、;if(i==1){switch(myn){case3:myg1[0]=1,myg1[1]=1,myg1[2]=1;myg2[0]=1,myg2[1]=0,myg2[2]=1;break;case4:myg1[0]=1,myg1[1]=1,myg1[2]=1,myg1[3]=1;myg2[0]=1,myg2[1]=0,myg2[2]=1,myg2[3]=1;break;case5:myg1[0]=1,myg1[1]=0,myg1[2]=1,myg1[3]=1,myg1[4]=1;myg2[0]=1,myg2[1]=1,myg2[2]=0,myg2[3]=1,myg2[
5、4]=1;break;case6:myg1[0]=1,myg1[1]=0,myg1[2]=1,myg1[3]=1,myg1[4]=1,myg1[5]=1;myg2[0]=1,myg2[1]=1,myg2[2]=0,myg2[3]=1,myg2[4]=0,myg2[5]=1;break;case7:myg1[0]=1,myg1[1]=0,myg1[2]=0,myg1[3]=1,myg1[4]=1,myg1[5]=1,myg1[6]=1;myg2[0]=1,myg2[1]=1,myg2[2]=0,myg2[3]=1,myg2[4]=1,myg2[5]=0,myg2[6]=
6、1;break;case8:myg1[0]=1,myg1[1]=0,myg1[2]=0,myg1[3]=1,myg1[4]=1,myg1[5]=1,myg1[6]=1,myg1[7]=1;myg2[0]=1,myg2[1]=1,myg2[2]=1,myg2[3]=0,myg2[4]=0,myg2[5]=1,myg2[6]=0,myg2[7]=1;break;case9:myg1[0]=1,myg1[1]=1,myg1[2]=0,myg1[3]=1,myg1[4]=0,myg1[5]=1,myg1[6]=1,myg1[7]=1,myg1[8]=1;myg2[0]=1,m
7、yg2[1]=0,myg2[2]=0,myg2[3]=0,myg2[4]=1,myg2[5]=1,myg2[6]=1,myg2[7]=0,myg2[8]=1;break;}}else{cout<<"输入g1"<>myg1[j];cout<<"输入g2"<>myg2[j];}cout<<"连接矢量1为"<