线性分组码的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆交通大学信息科学与工程学院综合性设计性实验报告
专业:通信工程专业12级
学号:************
*名:***
实验所属课程:信息论与编码
实验室(中心):软件与通信实验中心
****:***
2015年4月
线性分组码的matlab实现
一、实验目的和要求。
信道编码的目的是为了改善通信系统的传输质量。按照监督码元与信息码元之间的关系,有线性码和非线性码。线性码的特点是监督码元与信息码元之间有线性关系,可用一组线性代数方程将其联系起来。
本实验用Matlab语言编程实现线性分组码。
二、实验原理。
线性分组码的编码包括两个基本步骤:首先将信源的输出序列分为k位一组的消息组(也称信息组,简称消息或信息);然后信道编码器按照一定的编码规则将k位消息变换为n个码元的码字。一个(n,k)线性分组码,如果码的数域为
GF(m),即每一个码元可能有m种取值,则信源可发出k
m种不同的消息。对于(n,k)
码,n表示码长,k表示信息码元的维数,也就是子空间的维数,设M=[m
1,m
2
,…,
m
k
]是输入纠错码编码器的信息,则由纠错码编码器输出的码字
C=MG
G为该(n,k)码的生成矩阵。
如果只考虑信道编码,则纠错码通信系统模型可归结为如下模型:
线性分组码(n ,k )中许用码字(组)为2k 个。定义线性分组码的加法为模二加法,乘法为二进制乘法。即1+1=0、1+0=1、0+1=1、0+0=0;1×1=1、1×0=0、0×0=0、0×1=0。且码字与码字的运算在各个相应比特位上符合上述二进制加法运算规则。
线性分组码具有如下性质(n ,k )的性质:
1、封闭性。任意两个码组的和还是许用的码组。
2、码的最小距离等于非零码的最小码重。
对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n ,则有可能构造出纠正一位或一位以上错误的线性码。
由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r 越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2k 个码字组成了n 维线性空间Vn 的一个K 维子空间。因此这2k 个码字完全可由k 个线性无关的矢量所组成。
对于分组码,有着以下结论:
1.检测e 个错码,则要求最小码距1min +≥e d ;
2.纠正t 个错码,则要求最小码距12min +≥t d ;
3.纠正t 个错码,同时检测e(e>t)个错码,则要求最小码距1min ++≥t e d ;
4.纠正t 个错码和p 个删除,则要求最小码距12min ++≥p t d
三、实验步骤
本次试验用Matlab 语言编程实现(10,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H 为(4×4)的矩阵,由监督方程得出,生成矩阵G 为已定义(10×4)的矩阵。具体实现方法如下:
①将要编码的序列先整形,整为4列
②如果序列不能被4整除在后边补0使其能被4整除
③将整形后的序列与生成矩阵G 相乘即得到编码后的码字
利用Matlab 函数找出所得分组码的最小距离。
四、程序代码:
1.(7,4)分组码
clear all ;
clc;
G2 =[1 0 0 0 1 0 1;
0 1 0 0 1 1 1;
0 0 1 0 1 1 0;
0 0 0 1 0 1 1];%生成矩阵
MSG=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1];%输入信息
code1=rem(MSG*G2,2) %输出码字
2.(10,4)线性分组码
%产生U,表示所有的信息序列
k=4;
for i=1:2^k
for j=k:-1:1
if rem(i-1,2^(-j+k+1))>=2^(-j+k)
u(i,j)=1;
else
u(i,j)=0;
end
end
end
%定义生成矩阵G
g=[1 0 0 1 1 1 0 1 1 1;
1 1 1 0 0 0 1 1 1 0;
0 1 1 0 1 1 0 1 0 1;
1 1 0 1 1 1 1 0 0 1];
%产生码字
c=rem(u*g,2)
%找出最小距离
w_min=min(sum((c(2:2^k,:))'))
五、对比分析,通过给给定不同的信源,对结果进行分析对比验证,并得出相应分分析报告。
运行程序,结果如下
1.(7,4)分组码
2.(10,4)线性分组码
六:提交实验报告与心得体会。
本次试验帮助我们理解信道编码中有关线性分组码的有关知识。通过对线性分组码中的线性分组码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的.
对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中可以选择M=2k个码组(k 通过本次试验,我仔细读懂程序,结合程序理解课本上的知识,感悟良多。对于任何知识,我们都不能仅限于书本,要通过实践加深理解,帮助我们记忆。