信息论与编码matlabWord文档下载推荐.docx
- 文档编号:19889088
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:15
- 大小:140.37KB
信息论与编码matlabWord文档下载推荐.docx
《信息论与编码matlabWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《信息论与编码matlabWord文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
hamming编码:
若一致监督矩阵H的列是由不全为0且互不相同的所有二进制m(m≥2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。
我们通过(7,4)汉明码的例子来说明如何具体构造这种码。
设分组码(n,k)中,k=4,为能纠正一位误码,要求r≥3。
现取r=3,则n=k+r=7。
我们用a0ala2a3a4a5a6表示这7个码元,用S1、S2、S3表示由三个监督方程式计算得到的校正子,并假设三位S1、S2、S3校正子码组与误码位置的对应关系如表1所示。
S1S2S3
错码位置
错码位置
001
a0
101
a4
010
al
110
a5
100
a2
111
a6
011
a3
000
无错码
表1校正子和错码位置关系
由表可知,当误码位置在a2、a4、a5、a6时,校正子S1=1;
否则S1=0。
因此有S1=a6⊕a5⊕a4⊕a2,同理有S2=a6⊕a5⊕a3⊕a1和S3=a6⊕a4⊕a3⊕a0。
在编码时a6、a5、a4、a3为信息码元,a2、a1、a0为监督码元。
则监督码元可由以下监督方程唯一确定
a6⊕a5⊕a4⊕a2=0
a6⊕a5⊕a3⊕a1=0(1.1.1)
a6⊕a4⊕a3⊕a0=0
也即
a2=a6⊕a5⊕a4
a1=a6⊕a5⊕a3(1.1.2)
a0=a6⊕a4⊕a3
由上面方程可得到表2所示的16个许用码组。
在接收端收到每个码组后,计算出S1、S2、S3,如果不全为0,则表示存在错误,可以由表1确定错误位置并予以纠正。
举个例子,假设收到码组为0000011,可算出S1S2S3=011,由表1可知在a3上有一误码。
通过观察可以看出,上述(7,4)码的最小码距为dmin=3,纠正一个误码或检测两个误码。
如果超出纠错能力则反而会因“乱纠”出现新的误码.
信息位
监督位
a6a5a4a3
a2a1a0
a6a5a4a3
a2a1a0
0000
0001
0010
0011
0100
0101
0110
0111
000
1000
1001
1010
1011
1100
1101
1110
1111
111
100
010
001
表2(7,4)汉明码的许用码组
(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。
根据式(2.2.0)A=[a6a5a4a3]·
G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(1.1.9)得
1000111
G=0100110
0010101
0001011
所以,可以得出如下方程组
a6=a6
a5=a5
a4=a4
a3=a3
a2=a6+a5+a4
a1=a6+a5+a3
a0=a6+a4+a3
根据此式子编出编码程序。
3.实验过程及结果
1、哈弗曼编码
例如:
当p1=0.3、p2=0.15、p3=0.05、p4=0.1、p5=0.4
则根据其原理得到的matlab程序如下:
clc;
clear;
A=[0.3,0.15,0.05,0.1,0.4];
%信源消息的概率序列
A=fliplr(sort(A));
%按降序排列
T=A;
[m,n]=size(A);
B=zeros(n,n-1);
%空的编码表(矩阵)
fori=1:
n
B(i,1)=T(i);
%生成编码表的第一列
end
r=B(i,1)+B(i-1,1);
%最后两个元素相加
T(n-1)=r;
T(n)=0;
T=fliplr(sort(T));
t=n-1;
forj=2:
n-1%生成编码表的其他各列
fori=1:
t
B(i,j)=T(i);
end
K=find(T==r);
B(n,j)=K(end);
%从第二列开始,每列的最后一个元素记录特征元素在
%该列的位置
r=(B(t-1,j)+B(t,j));
T(t-1)=r;
T(t)=0;
T=fliplr(sort(T));
t=t-1;
B;
%输出编码表
END1=sym('
[0,1]'
);
%给最后一列的元素编码
END=END1;
t=3;
d=1;
forj=n-2:
-1:
1%从倒数第二列开始依次对各列元素编码
t-2
ifi>
1&
B(i,j)==B(i-1,j)
d=d+1;
else
d=1;
B(B(n,j+1),j+1)=-1;
temp=B(:
j+1);
x=find(temp==B(i,j));
END(i)=END1(x(d));
y=B(n,j+1);
END(t-1)=[char(END1(y)),'
0'
];
END(t)=[char(END1(y)),'
1'
t=t+1;
END1=END;
A%排序后的原概率序列
END%编码结果
[a,b]=size(char(END(i)));
L(i)=b;
avlen=sum(L.*A)%平均码长
H1=log2(A);
H=-A*(H1'
)%熵
P=H/avlen%编码效率
输出结果:
同样,例如:
p1=0.3、p2=0.15、p3=0.05、p4=0.1、p5=0.4时
根据其原理所得到的matlab程序如下:
clc;
%降序排列
B(i,1)=A(i);
%生成B的第1列
%生成B第2列的元素
a=sum(B(:
1))/2;
fork=1:
n-1
ifabs(sum(B(1:
k,1))-a)<
=abs(sum(B(1:
k+1,1))-a)
break;
n%生成B第2列的元素
ifi<
=k
B(i,2)=0;
B(i,2)=1;
%生成第一次编码的结果
END=B(:
2)'
;
END=sym(END);
%生成第3列及以后几列的各元素
j=3;
while(j~=0)
p=1;
while(p<
=n)
x=B(p,j-1);
forq=p:
ifx==-1
ifB(q,j-1)==x
y=1;
continue;
y=0;
ify==1
q=q+1;
ifq==p|q-p==1
B(p,j)=-1;
ifq-p==2
B(p,j)=0;
END(p)=[char(END(p)),'
B(q-1,j)=1;
END(q-1)=[char(END(q-1)),'
a=sum(B(p:
q-1,1))/2;
fork=p:
q-2
ifabs(sum(B(p:
=abs(sum(B(p:
k+1,1))-a);
fori=p:
q-1
B(i,j)=0;
END(i)=[char(END(i)),'
B(i,j)=1;
p=q;
end
C=B(:
j);
D=find(C==-1);
[e,f]=size(D);
ife==n
j=0;
j=j+1;
B
A
END
[u,v]=size(char(END(i)));
L(i)=v;
avlen=sum(L.*A)
汉明码:
close;
N=100;
display('
随机产生二进制信源消息序列:
'
[a]=randint(1,100);
%************转换矩阵[a]
fori=0:
(length(a)/4-1)
forj=0:
(4-1)
P(i+1,j+1)=a(j+i*4+1);
[P]
%functiong=hammingdecod(R)
%H=input('
生成汉明码:
H=[1110100;
1101010;
1011001];
%生成汉明码
G=[1000111;
0100110;
0010101;
0001011]%(7,4)汉明码的生成矩阵
%t=input('
输入0或1:
%t=0则产生(7,4)汉明码,t=1则对输入序列进行编码
%ift==1
c=mod(P*G,2);
%编码的码字c
%function[X]=turnRow(c)
n=size(c);
(n
(1)-1)
(n
(2)-1)
X(j+i*n
(2)+1)=c(i+1,j+1);
X1=randerr(1,175,1);
%************相加
Q=mod(X1+X,2);
%************转换矩阵X1
%**********编码
fori=0:
(length(Q)/7-1)
(7-1)
Q1(i+1,j+1)=Q(j+i*7+1);
disp('
输出编码后序列为:
Q1
Z=mod(Q1*H'
2);
Z
%**********编码
n=size(Z);
%T=T();
T(i+1)=4*Z(i+1,1)+2*Z(i+1,2)+Z(i+1,3);
ifT(i+1)
Q1(i+1,8-T(i+1))=1-Q1(i+1,8-T(i+1));
T=Q1;
(经过信道后变为:
T
%**************译码functionC=yima(B,k)
n=size(T);
n
(1)
forj=1:
4
C(i,j)=T(i,j);
输出译码序列:
disp(C);
实验心得:
通过这次实验,我更深入了解了哈夫曼编码的构造原理。
在实验过程中,我掌握了哈曼树的构造方法,学会了如何将理论知识传换成实际应用。
同时,在解决程序中遇到的一些问题的同时,我也对调试技巧有了更好的掌握,分析问题的能力也略有提高。
同时,进一步使用了matlab这个软件工具,进一步熟悉了在matlab中的编程的语法和结构。
认识到了软件工具在通信科研仿真方面的重要作用和方便性。
正所谓“纸上得来终觉浅,觉知此事要躬行。
”学习任何知识,仅从理论上去求知,而不去实践、探索是不够的。
在整个实验过程中我懂得了许多东西,虽然很多东西都是从网上找的,但是在查找的过程中我们也知道了许多原来不知道的东西,对于源代码的修改以及成功利用也树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在实验过程中的成功喜悦。
虽然这个实验做的不怎么好,但是在过程中所学到的东西是这次实验的最大收获和财富,使我终身受益。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 编码 matlab