实验四 求循环码的最小汉明距离

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四求循环码的最小汉明距离

一、实验题目

1、输入码的生成多项式;

2、输出码的最小汉明距离。

二、实验目的

1、理解和掌握循环码的概念以及生成方法;

2、求出循环码的最小距离。

三、算法设计

四、程序分析

1.采用Matlab编程;

2.cyclpoly(15, 4,'all')函数用来产生(15,4)循环码的所有生成多项式;

3.circshift()函数是进行移位操作函数;

4.sym2poly()函数是将多项式转化为矩阵表示形式;

5.expand(x^r*m)函数是对m进行左移r位的操作;

五、程序代码

syms x ;

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);

for i=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循环移位,得到其他的码字

for i=1:L-1

T2(i+1,:)=circshift(T2(i,:),[0,1]);

end

Y=[zeros(1,L);T2]; %Y矩阵为生成的全部码字

%求最小汉明距离

t=1;

for i=1:15

for j=i+1:16

M(t,:)=(Y(i,:)~=Y(j,:));

t=t+1;

end

end%分别比较两行中不同的元素

S=(sum(M,2))'; %将M矩阵的每一行求和,得出任意两个码字之间的距离

d=min(S); %最小汉明距离

display(d);

六、程序运行结果

七、心得体会

刚刚接触Matlab不久,对于Matlab里的函数不是十分了解,在解读程序时需要将函数一个个打开,解读它的注释,了解函数的算法;经过对程序细致的解读,不但对求循环码的最小汉明距离有了更深的了解,对Matlab的软件也有了更多的掌握,可谓收获颇丰。只是可惜的是自己的编程能力不好,时间不允许我慢慢磨蹭着自己写程序,所以只好看成熟的程序,看会了、了解了,这些知识也是我的。

相关文档
最新文档