线性分组码编码的分析与实现..

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

吉林建筑大学
电气与电子信息工程学院
信息理论与编码课程设计报告
设计题目:线性分组码编码的分析与实现
专业班级:电子信息工程101
学生姓名:张様
学号:10210122
指导教师:吕卅王超
设计时间:2013.11.18-2013.11.29
教师评语:
成绩评阅教师日期
一、设计的作用、目的
《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。

其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。

目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。

而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。

通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。

二、设计任务及要求
设计一个(6,3)线性分组码的编译码程序,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。

同时,还要让它具有对接收到的整个码组中提取信息码组的功能。

通过课程设计各环节的实践,应使学生达到如下要求:
1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;
2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点;
3. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程;
4. 能够使用MATLAB或其他语言进行编程,编写的函数要有通用性。

三、设计内容
已知一个(6,3)线性分组码的Q矩阵:设码字为(c5,c4, c3, c2,c1,c0)
0 1 1
Q= 1 0 1
1 1 0
求出标准生成矩阵和标准校验矩阵,完成对任意信息序列(23个许用码字)的编码。

当接收码字R 分别为(000000), (000001), (000010), (000100), (001000), (010000), (100000), (100100)时,写出其伴随式S ,以表格形式写出伴随式与错误图样E 的对应关系。

纠错并正确译码,当有两位错码时,假定c 5位和c 2位发生错误。

四、设计原理
4.1线性分组码的标准生成矩阵和标准校验矩阵
4.1.1线性分组码的性质
线性分组码具有如下性质(n ,k )的性质: 1、封闭性。

任意两个码组的和还是许用的码组。

2、码的最小距离等于非零码的最小码重。

对于长度为n 的二进制线性分组码,它有种2n 可能的码组,从2n 种码组中,可以选择M=2k 个码组(k<n )组成一种码。

这样,一个k 比特信息的线性分组码可以映射到一个长度为n 码组上,该码组是从M=2k 个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。

对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n,则有可能构造出纠正一位或一位以上错误的线性码。

4.1.2生成矩阵和校验矩阵
线性分组码码空间C 是由k 个线性无关的基底1-k g ,…1g 0g ,张成的k 维n 重子空间,码空间的所有元素都可以写成k 个基底的线性组合,即
=C 001111g m g m g m k k +++-- 这种线性组合特性正是线性分组码。

为了深化对线
性分组码的理论分析,可将其与线性空间联系起来。

由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。

用i g 表示第i 个基底并写成n ⨯1矩阵形式[]
01)2()1(,,,,i i n i n i i g g g g g --=再将k 个基底排列成k 行n 列的G 矩阵,得:
=G []T
k g g g 011,,,⋯-=⎥⎥⎥
⎥⎥⎦
⎤⎢⎢⎢⎢
⎢⎣⎡------0001
)
1(01011)1(10)1(1)1()1)(1(g g g g g g g g g n n k k n k
由于k 个基底即G 的k 个行矢量线性无关,矩阵G 的秩一定等于k ,当信息元确定后,码字仅由G 矩阵决定,因此称这n k ⨯矩阵G 为该()k n ⨯线性分组码的生成矩阵。

基底的线性组合等效于生成矩阵G 的行运算,可以产生一组新的基底。

利用这点可使生成矩阵具有如下的“系统形式”:
[]⎥⎥
⎥⎥⎦

⎢⎢⎢
⎢⎣⎡==---------0001
)1(01011)1(10)1(1)1()
1)(1(1000
010
001
p p p p p p p p p P I G k n k n k k k n k k 与任何一个()k n ,分组线性码的码空间C 相对应,一定存在一个对偶空间D 。

事实上,码空间基底数k 只是n 维n 重空间全部n 个基底的一部分,若能找出另外k n -个基底,也就找到了对偶空间D 。

既然用k 个基底能产生一个()k n ,分组线性码,那么也就能用k n -个基底产生包含k
n -2
个码字的()k n n -,分组线性码,
称()k n n -,码是()k n ,码的对偶码。

将D 空间的k n -个基底排列起来可构成一个
()n k n ⨯-矩阵,将这个矩阵称为码空间C 的校验矩阵H ,而它正是()k n n -,对偶
码的生成矩阵,它的每一行是对偶码的一个码字。

C 和D 的对偶是互相的,G 是
C 的生成矩阵又是
D 的校验矩阵,而H 是D 的生成矩阵,又是C 的校验矩阵。

由于C 的基底和D 的基底正交,空间C 和空间D 也正交,它们互为零空间。

因此,()k n ,线性码的任意码字c 一定正交于其对偶码的任意一个码字,也必定正交于校验矩阵H 的任意一个行矢量,即0=T cH 。

由于生成矩阵的每个行矢量都是一个码字,因此必有0=T GH 。

对于生成矩阵符合“系统形式”G 的系统码,其校验矩阵也是规则的,必为:
[]
k n T I P H --=
上式中的负号在二进制码情况下可以省略,因为模2减法和模2加法是等同的。

在本次课程设计中,要求设计(6,3)线性分组码,因此其信息码元及对应码字的关系如下表:
信息码元 码字 系统码字 000 000000 000000 001 011101 001011 010 110001 010110 011 101100 011101 100 111010 100111 101 100111 101100 110 001011 110001 111
010110
111010
表4-1信息码元及对应码字关系
4.2线性分组码的伴随式与译码
4.2.1码的距离及检错能力
两个码字之间,对应位取之不同的个数,称为汉明距离,用d 表示。

一个码的最小距离min d 定义为{}),(,,,min ),(min k n c c j j d d j i cj ci ∈≠=,两个码字之间的距离表示了它们之间差别的大小。

距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。

码的最小距离愈大,其抗干扰能力愈强。

任何最小距离min d 的线性分组码,其检错能力为()1min -d 纠错能力t 为
⎥⎦
⎤⎢⎣⎡-
=21m i n d I N T t 最小距离min d 表明码集中各码字差异的程度,差异越大越容易区分,抗干扰能力自然越强,因此成了衡量分组码性能最重要的指标之一。

估算最小距离是纠错码设计的必要步骤,最原始的方法是逐一计算两两码字间距离,找到其中最小者。

含k
2个码字的码集需计算
()
2
122-k
k 个距离后才能找出min d ,费时太多,实用中
还有一些更好更快的方法。

线性分组码的最小距离等于码集中时非零码字的最小重量,即
(){}i C w d m i n m i n = 0≠∈i i C C C 及
这里利用了群的封闭性,由于分组码是群码,任意两码字之和仍是码字,即C C C C i k j ∈=⊕。

因此任意两码字间的汉明距离其实必是另一码字的重量,表示为()()()(){}(){}i k j i k j k i C w C C d C w C C w C C d min ,min ,,==⊕=。

于是可将最小距离问题转化为寻找最轻码字问题,含k 2个码字的码集仅需计算k 2次。

4.2.2伴随式与译码
假设接收端收到的码字为B ,那么它和原来发送端发送的码字A 之间就有可能存在着误差。

即在码组{}012
3456
a a a a a a a A =中的任意一位就有可
能出错。

这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。

为了描述数据在传输信道中出现错误的情况,引入了错误图样E ,在错误图样中,0代表对应位没有传错,1代表传输错误。

实际上错误图样E 就是收序列与发送序列的差。

所以在译码中用接收到的码字B 模尔加错误图样E 就可以得到发送端的正确码字A 。

因此译码的过程就是要找到错误图样E 。

定义:校正子S
()
T
T
T T
T H E H E H A H E A H B S *****=+=+==
因为A 是编得的正确码字。

根据前面所叙述,它和监督矩阵的转置相乘为0。

显然,S 仅与错误图样有关,它们之间是一一对应的关系。

找到了校正子S ,也就可以找到E 。

而与发送的码字无关。

若0=E ,则0=S ;因此根据S 是否为0可进行码字的检错。

如果接收码字B 中只有一位码元发生错误,又设错误在第i 位。

即11=-i E ,其他的i E 均为0。

在后面的译码程序中,建立了一个校正子S 与错误图样E 对应的表。

也就是收到一个B 序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E ,再通过B 模尔加上E ,就可以得到正确的码字A 。

因为在不同的错误序列B 中,同一位码元错误时对应的E 是一样的,所以可以利用0000000这个正确的码字让它每位依次错误,来求得它的八个校正子。


这时的矩阵B 就是错误图样E 。

五、设计步骤
5.1编码过程
监督矩阵H 和生成矩阵G 的关系:
由H 与G 的分块表示的矩阵形式[]k n I P H -= ,[]Q I G k =T Q P =,。

则有
0=∙T H G 或者 0=∙T G H 。

已知给出的(6,3)线性分组码的Q 矩阵:
0 1 1
Q=
1 0 11 1 0
则可以根据[]Q I G k =求出生成矩阵:
⎥⎥
⎥⎦

⎢⎢⎢⎣⎡=011100101010110001G 由T Q P = 和[]k n I P H -= 可求出监督矩阵H 为:
⎥⎥
⎥⎦

⎢⎢⎢⎣⎡=100011010101001110H 有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即MATLAB 函数为:()2,*G I rem C = ,其中C 为编码后的结果,I 为信息矩阵,G 为生成矩阵。

则编码的所有情况为:
编码序列: 信息位 || 监督位

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
⎡=00
011
101101110110111000111011010101001110000000
0C
5.2译码过程
对于译码过程来说,同样由上知道监督矩阵:
⎥⎥
⎥⎦

⎢⎢⎢⎣⎡=100011010101001110H H 矩阵与()k n ,码的任何一个许用码字进行相乘的结果必等于0,即若
G m C ∙=是任一()k n ,码字,则必有0=∙T H C 。

若不属于许用码字,或有传输
差错,且差错位数在()k n ,码纠错能力内,则运算结果将为非0值,此时,可以纠错或检错重发。

(1)当接受码字为(00000000)时:
伴随式[]000100
010001011101110
0000000=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∙=∙=T
H R S
所以此时接受编码无错误。

(2)当接受码字为(00000001)时:
伴随式[]001100
0100010111011100000011=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∙=∙=T
H R S 所以,此时接受编码第一位发生错误,纠错后的正确译码为(000000)。

(3)当接受码字为(00000010)时:
伴随式[]0101000100010111010000102=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦
⎢⎢⎢⎢⎢⎢⎢⎢⎣∙=∙=T H R S 所以,此时接受编码第二位发生错误,纠错后的正确译码为(000000)。

(4)当接受码字为(00000100)时:
伴随式[]011100
0100010111011100001003=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∙=∙=T
H R S 所以,此时接受编码第三位发生错误,纠错后的正确译码为(000000)。

(5)当接受码字为(00001000)时:
伴随式[]100100
0100010111011100010004=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∙=∙=T
H R S 所以,此时接受编码第四位发生错误,纠错后的正确译码为(000000)。

(6)当接受码字为(00010000)时:
伴随式[]1011000100010111011100100005=⎥
⎥⎥
⎥⎥⎥
⎥⎥⎦⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎣
⎡∙=∙=T H R S 所以,此时接受编码第五位发生错误,纠错后的正确译码为(000000)。

(7)当接受码字为(00100000)时:
伴随式[]1101000100010111011000006=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦
⎢⎢⎢⎢⎢⎢⎢⎢⎣∙=∙=T H R S 所以,此时接受编码第六位发生错误,纠错后的正确译码为(000000)。

(8)当接受码字为(100100)时:
伴随式[]111100
0100010111011101001007=⎥⎥⎥
⎥⎥⎥
⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∙=∙=T
H R S 所以,此时接受编码第五位和第二位发生错误,纠错后的正确译码(110110)。

当编码矩阵与生成矩阵的转置矩阵相乘时,若当其中的一位编码或两位出现差错时会有八种情况,则这些情况列出错码矩阵如下:
表5.1 伴随式S 与错误图样E 的对应关系
六、仿真程序及结果分析
6.1 MATLAB 简介
校正子S 错误图样E 000 000000 001 000001 010 000010 011 000100 100 001000 101 010000 110 100000 111
010010
1 基本功能
MATLAB是很实用的数学软件它在数学类科技应用软件中在数值运算方面首屈一指。

MATLAB可以进行运算、绘制函数和数据、实现算法、创建用户界面、连接接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使M ATLAB成为一个强大的数学软件。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

2 基本应用
MATLAB 产品族可以用来进行以下各种工作:
●数值分析
●数值和符号计算
●工程与科学绘图
●控制系统的设计与仿真
●图像处理技术
●数字信号处理技术
●通讯系统设计与仿真
2.1 特点
●此高级语言可用于技术计算
●此开发环境可对代码、文件和数据进行管理
●交互式工具可以按迭代的方式探查、设计及求解问题
●二维和三维图形函数可用于可视化数据
●各种工具可用于构建自定义的图形用户界面
2.2优势
(1)友好的工作平台和编程环境
MATLAB由一系列工具组成。

这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。

包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

随着MATLAB的商业化以及软件本身的不断升级,MATL AB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。

而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。

简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

(2)简单易用的程序语言
MATLAB一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。

使之更利于非计算机专业的科技人员使用。

而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。

其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。

函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。

在通常情况下,可以用它来代替底层编程语言,如C复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

6.2 仿真程序
% H 监督矩阵
% G 生成矩阵
% C 编码矩阵
% I 输入信息序列
% R 信道输出码
% A 纠错输出码序列
% E 错码矩阵
% S 校验子矩阵
% M 校验子的行的十进制序列
%信道编码程序
clear all
close all
H=[0 1 1 1 0 0;
1 0 1 0 1 0;
1 1 0 0 0 1]; %监督矩阵H
G=gen2par(H); %求H阵的生成矩阵G I=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
C=rem(I*G,2); %求码字C
disp('所得的编码结果为:C='); %显示输出码字C disp(C);
%信道译码程序
clear all;
close all;
H=[0 1 1 1 0 0;
1 0 1 0 1 0;
1 1 0 0 0 1]; %监督矩阵H
B=input('请输入接收码组B:');
[a,b]=size(B); %返回数组B的维数
E=[0 0 0 0 0 0;0 0 0 0 0 1;0 0 0 0 1 0;0 0 0 1 0 0;
0 0 1 0 0 0;0 1 0 0 0 0;1 0 0 0 0 0;1 0 0 1 0 0];
S=rem(B*H',2); %求校验子S i=1;
for i=1:1:a
M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3); %求校验子所表示的十进制整数
end
for i=1:1:a
switch(M(i,1))
case 0
A(i,:)=B(i,:)+E(1,:);
case 1
A(i,:)=B(i,:)+E(2,:);
case 2
A(i,:)=B(i,:)+E(3,:);
case 3
A(i,:)=B(i,:)+E(4,:);
case 4
A(i,:)=B(i,:)+E(5,:);
case 5
A(i,:)=B(i,:)+E(6,:);
case 6
A(i,:)=B(i,:)+E(7,:);
case 7
A(i,:)=B(i,:)+E(8,:);
end
end
for i=1:1:a
switch(M(i,1))
case 0
disp(‘没有出现错误!’);
case 1
disp(‘注意:第1位出现一个错误!请纠正!’);
case 2
disp(‘注意:第2位出现一个错误!请纠正!’);
case 3
disp(‘注意:第3位出现一个错误!请纠正!’);
case 4
disp(‘注意:第4位出现一个错误!请纠正!’);
case 5
disp(‘注意:第5位出现一个错误!请纠正!’);
case 6
disp(‘注意:第6位出现一个错误!请纠正!’);
case 7
disp(‘注意:第6位和第3位出现两个错误!请纠正!’);
end
end
A=rem(A,2); %求出正确的编码
disp('检纠错后的码组A=');
disp(A); %显示正确的编码
j=1;
while j<=3 %提取信息位
I(:,j)=A(:,j);
j=j+1;
end
disp('译出的信息序列I=');
disp(I); %显示原信息码
6.3 仿真结果
图6.1 输出编码结果和无错误输入
图6.2 有一位错误输入时显示图
图6.3 有两位错误输入时显示图
6.4结果分析
1.输出编码结果及输入正确接收码的译码结果分析
由图6-1可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,所以我们可以知道程序的编码过程是正确的。

对于译码过程而言,当界面显示“请输入接收码组B:”,然后从提示符后输入:[0 0 0 0 0 0],由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可见程序的译码片段是正确的。

2.输入一位错误时的结果分析
由图6-1可以看出,当界面显示“请输入接收码组B:”。

然后从提示符后输入:[1 0 1 0 0 0],由图6-2 有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。

可见程序的纠错功能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。

3.输入两位特定位错误时的结果分析
由图6-3 有两位特定位错误输入时的显示图知,当输入B=[1 0 0 1 0 0]时,校正子是111,错误图样是100100,所以说明理论得以验证。

七、体会及建议
通过这次的课程设计,我学习到了很多东西,让我对线性编码有了一个全新的认识,对Matlab的掌握也进步了很多,为以后的学习中出现的可能问题做好了准备,锻炼了自己的动手能力和设计能力,掌握了一种科技工具,丰富了自己的学习生活。

整个实验过程中我懂得了许多东西,在查找的过程中我们也知道了许多原来不知道的东西,对于源代码的修改以及成功利用也树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在实验过程中的成功喜悦。

让我对MATLAB软件有了更深的了解,对MATLAB语言也有了更加深入的学习和理解。

在本次的设计中,我了解了MATLAB中很多函数的用法,提高了我编程的能力,在软件仿真上,提高了自己的动手能力和学习能力,为以后的学习打下了良好的基础。

通过对线性分组码中的线性分组码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。

信息码元与校验位之间为线性关系。

并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的.
对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。

就像本设计的(6,3)分组码的(n,k)中,n=6,k = 3,r≥3能纠正一位误码,检测到两位误码。

运用MATLAB语言进行编程,可以较明显的知道编码的过程和译码时出现的错误,码字的最小距离是3时,可以纠正一位错误,当输入特定的两位错误时,该码字还可以纠正这两位错误,这种情况在编程结果的命令窗口中可以明显看到。

线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术之一。

通过课程设计我们可以学习到在书本上学不到的知识,可以了解在课堂上理解不了的概念,课程设计是一个学者从理论走向实践必不可少的过程,所以我觉的各位老师应该多给我们这样的机会,让我们真正的可以从书本过渡到实践,让我们可以真正的成为一个可以为国家作出杰出贡献的栋梁之才。

八、参考文献
[1] 曹雪虹,张宗橙.信息论与编码(第二版).北京:清华大学出版社.2009
[2] 吕锋,王虹,刘皓春,苏扬.信息论与编码.北京:人民邮电出版社.2004
[3] 樊昌信,曹丽娜.通信原理(第六版).北京:国防工业出版社.2006
[4] 王慧琴.数字图像处理.北京:北京邮电大学出版社.2007
[5] 孙丽华. 信息论与纠错编码.电子工业出版社.2005
[6] 罗建军. MATLAB教程.电子工业出版社.2007
[7] 曹弋. MATLAB教程及实训.机械工业出版社.2008。

相关文档
最新文档