线性分组码的matlab的实现,线性分组码的matlab实现

41528d3028836879cd698677c3999917.gif线性分组码的matlab实现

重庆交通大学信息科学与工程学院 综合性设计性实验报告 专 业: 通信工程专业12级 学 号: 631206040105 姓 名: 刘志坤 实验所属课程: 信息论与编码 实验室(中心): 软件与通信实验中心 指 导 教 师 : 黄大荣 2015年4月 教师评阅意见: 签名: 年 月 日 实验成绩: 线性分组码的matlab实现 一、实验目的和要求。 信道编码的目的是为了改善通信系统的传输质量。按照监督码元与信息码元之间的关系,有线性码和非线性码。线性码的特点是监督码元与信息码元之间有线性关系,可用一组线性代数方程将其联系起来。 本实验用Matlab语言编程实现线性分组码。 2、 实验原理。 线性分组码的编码包括两个基本步骤:首先将信源的输出序列分为k位一组的消息组(也称信息组,简称消息或信息);然后信道编码器按照一定的编码规则将k位消息变换为n个码元的码字。一个(n,k)线性分组码,如果码的数域为GF(m),即每一个码元可能有m种取值,则信源可发出种不同的消息。对于(n,k)码,n表示码长,k表示信息码元的维数,也就是子空间的维数,设M=[m1,m2,…,mk]是输入纠错码编码器的信息,则由纠错码编码器输出的码字 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个错码,则要求最小码距; 2. 纠正t个错码,则要求最小码距; 3. 纠正t个错码,同时检测e(e>t)个错码,则要求最小码距; 4. 纠正t个错码和p个删除,则要求最小码距 3、 实验步骤 本次试验用Matlab语言编程实现(10,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(4×4)的矩阵,由监督方程得出,生成矩阵G为已定义(10×4)的矩阵。具体实现方法如下: ①将要编码的序列先整形,整为4列 ②如果序列不能被4整除在后边补0使其能被4整除 ③将整形后的序列与生成矩阵G相乘即得到编码后的码字 利用Matlab函数找出所得分组码的最小距离。 4、 程序代码: 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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab实现线性分组码,可以按照以下步骤进行: 1. 定义编码矩阵和原始数据块 假设我们有一个5个数据块的信道传输任务,每个数据块有2个元素。编码矩阵可以定义为一个5x2的矩阵,原始数据块可以定义为一个2x5的矩阵。例如: ``` G = [1 0; 1 1; 1 2; 2 1; 2 2]; D = [1 2 3 4 5; 6 7 8 9 10]; ``` 2. 计算编码后的数据块 可以通过矩阵相乘的方式,将编码矩阵和原始数据块相乘,得到编码后的数据块。例如: ``` C = G * D; ``` 3. 模拟信道传输过程 为了模拟信道传输过程,可以在编码后的数据块中引入一些随机误差。例如,可以使用rand函数生成一个与编码后数据块相同大小的随机矩阵,再将其与编码后的数据块相加,得到传输后的数据块。例如: ``` E = 0.1 * randn(size(C)); R = C + E; ``` 这里我们假设误差率为10%。 4. 解码数据块 通过解码矩阵,就可以将传输后的数据块解码为原始的数据块。解码矩阵可以通过高斯消元法或者列选主元的高斯消元法来求解。例如: ``` L = rref([G R]); D_rec = L(:, end-4:end-1); ``` 这里我们假设接收接收到了9个数据块,我们可以将解码矩阵中的最后5列作为解码后的数据块。 完整的Matlab代码示例如下: ``` % 定义编码矩阵和原始数据块 G = [1 0; 1 1; 1 2; 2 1; 2 2]; D = [1 2 3 4 5; 6 7 8 9 10]; % 计算编码后的数据块 C = G * D; % 模拟信道传输过程 E = 0.1 * randn(size(C)); R = C + E; % 解码数据块 L = rref([G R]); D_rec = L(:, end-4:end-1); ``` 这样就完成了线性分组码Matlab实现。需要注意的是,这里只是一个简单的示例,实际应用中,还需要考虑很多因素,如编码矩阵的选择、误差率的控制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值