您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验四-求循环码的最小汉明距离
实验四求循环码的最小汉明距离一、实验题目1、输入码的生成多项式;2、输出码的最小汉明距离。二、实验目的1、理解和掌握循环码的概念以及生成方法;2、求出循环码的最小距离。三、算法设计四、程序分析1.采用Matlab编程;2.cyclpoly(15,4,'all')函数用来产生(15,4)循环码的所有生成多项式;3.circshift()函数是进行移位操作函数;4.sym2poly()函数是将多项式转化为矩阵表示形式;5.expand(x^r*m)函数是对m进行左移r位的操作;五、程序代码symsx;G=cyclpoly(15,4,'all');%求出所有的生成多项式功能:产生循环码的生成多项式g=G(2,:);%选择所有生成多项式中的第二个作为(15,4)循环码的生成多项式r=15-4;%监督位数m=x^3+x^2+1;%信息码元m1=expand(x^r*m);%用x^r乘以m,相当于对m进行左移r位的操作m2=sym2poly(m1);%将多项式转化为矩阵表示形式[Q,R]=DECONV(m2,g);%求m2除以g所得的余数%由于在求解余数时是按照一般的算术运算计算的,%而实际要求的为模2运算,转化为模2运算R=abs(R);fori=1:length(R)R(i)=mod(R(i),2);end%C(X)=x^r*m(x)+x^r*m(x)/g(x)T=R+m2;%T为生成的一个循环码字T2(1,:)=T;[W,L]=size(T);%将T2循环移位,得到其他的码字fori=1:L-1T2(i+1,:)=circshift(T2(i,:),[0,1]);endY=[zeros(1,L);T2];%Y矩阵为生成的全部码字%求最小汉明距离t=1;fori=1:15forj=i+1:16M(t,:)=(Y(i,:)~=Y(j,:));t=t+1;endend%分别比较两行中不同的元素S=(sum(M,2))';%将M矩阵的每一行求和,得出任意两个码字之间的距离d=min(S);%最小汉明距离display(d);六、程序运行结果七、心得体会刚刚接触Matlab不久,对于Matlab里的函数不是十分了解,在解读程序时需要将函数一个个打开,解读它的注释,了解函数的算法;经过对程序细致的解读,不但对求循环码的最小汉明距离有了更深的了解,对Matlab的软件也有了更多的掌握,可谓收获颇丰。只是可惜的是自己的编程能力不好,时间不允许我慢慢磨蹭着自己写程序,所以只好看成熟的程序,看会了、了解了,这些知识也是我的。
本文标题:实验四-求循环码的最小汉明距离
链接地址:https://www.777doc.com/doc-5650299 .html