纠错编码基本实验matlab实现包含源代码

合集下载

基于matlab的信道编码仿真(可编辑)

基于matlab的信道编码仿真(可编辑)

基于matlab的信道编码仿真(可编辑)基于matlab的信道编码仿真海南大学毕业论文(设计)题目:基于matlab的信道编码仿真学号:姓名:年级:学院:信息科学技术学院系别:电子信息工程专业:电子信息工程指导教师: 完成日期:摘要通信技术的飞速发展,信道编码已经成功地应用于各种通信系统中。

以及各种传输方式对可靠性要求的不断提高,信道编码技术作为抗干扰技术的一种重要的手段,在数字通信技术领域和数字传输系统中显示出越来越重要的作用。

信道编码的目的是为了改善通信系统的传输质量。

由于实际信道存在噪声和干扰,使发送的码字与信道传输后所接收的码字之间存在差异,称这种差异为差错。

一般情况下,信道噪声、干扰越大,码字产生差错的概率也就越大。

本文利用matlab对二进制对称信道BSC,高斯白噪声信道AWGN两种信道的仿真,(7,4)Hamming码对信道的仿真,通过误码率的曲线图来了解信道的编码。

并利用matlab的simulink模块仿真,运用simulink里的卷积码viterbi译码器来对二进制对称信道和高斯白噪声信道的仿真,观察误码率的曲线图来了解2个信道的不同。

关键字:matlab,信道,编码,译码,Simulink。

AbstractWith the rapid development of communication technology, channelcoding has been successfully applied to various communications systems. And a variety of transmission of the continuous improvement ofreliability requirements, anti-jamming channel coding technology as an important means of technology in the field of digital communications technology and digital transmission systems in a more and more important role The purpose of channel coding is to improve the transmissionquality of communications systems. As the actual existence of thechannel noise and interference, the transmitted codewords and channel transmission received after the difference between code words, said this difference is wrong. Under normal circumstances, channel noise, the greater the interference, the code word generated the greater the probability of errorIn this paper, matlab binary symmetric channel BSC, Gaussian white noise channel AWGN two channel simulation, 7,4 Hamming code simulation of the channel, through the bit error rate curve to understand the channel coding. Using matlab to simulink block simulation, using simulink in the viterbi decoder to convolutional codes on the binary symmetric channel and Gaussian white noise channel simulation, observation error rategraphs to understand the two different channelsKeywords: matlab, channel, coding, decoding, Simulink.目录1引言 11.1选题的目的和意义 11.2本选题的理论依据、研究内容 12.信道编码以及其运行环境MATLAB的介绍 2 2.1 信道编码的概念及分类 22.2 信道编码定理及信道编码中所包含的各种码类的简介 22.2.1卷积码 22.2.2线性分组码 32.2.3循环码 32.3 MATLAB语言的简介 42.4 Simulink 53.信道 53.1二进制对称信道(BSC) 53.2二进制删除信道(BEC) 63.3高斯白噪声信道AWGN 64. Hamming码 74.1汉明码 74.2校验方法 74.3汉明码编码 94.3.1汉明码对高斯白噪声信道 94.3.2汉明码对二进制对称信道的仿真 115.卷积码 155.1卷积码定义与原理 155.2维特比译码原理 155.3卷积码译码器对高斯白噪声信道的设计与仿真 18 5.3.1卷积码译码器的设计与仿真 195.3.2简化维特比译码器的仿真 225.3.3卷积码译码器的误码率分析 245.4卷积编码器在二进制对称信道(BSC)中的性能 256.卷积码译码器对二进制对称信道和高斯白噪声信道仿真比较 307.总结 31致谢 32参考文献 33附录1: 34附录2: 37附录3: 40附录4: 411引言1.1选题的目的和意义数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。

利用Matlab进行BCH编码、译码仿真讲解

利用Matlab进行BCH编码、译码仿真讲解

利用Matlab进行BCH编码、译码仿真1.课程设计目的(1)掌握BCH编码、译码。

(2)通过Matlab仿真,加深对BCH编码理解。

(3)锻炼运用所学知识,独立分析问题、解决问题的综合能力。

2.课程设计要求了解BCH编码是建立在严格的代数数学基础上的,就有限域和扩域进行了介绍;就BCH码相关的基础知识(BCH码定义、码长、生成多项式等等)进行学习,了解BCH码的编码和译码过程;介绍了彼得森译码算法程序框图,了解彼得森译码的过程与原理。

最后利用Matlab 编程分析BFSK在加性高斯白噪声信道的误码率性能;通过Simulink 建立BFSK+信道编码(取BCH码)在加性高斯白噪声信道下的仿真模型,从信源—BCH编码—BPSK调制—高斯信道—BPSK解调—BCH译码—信宿,设置好每个模块的参数,编写好主程序实现BFSK的输入,在程序运行过程中间调用BFSK仿真模型,仿真结果出现没有经过BCH 编码的误码率曲线图和经过BCH编码后的误码率曲线图,根据仿真误码率曲线走势进行分析,注意分析不同的纠错能力对误码率性能的影响,不同的纠错能力对译码复杂度的影响(用译码的时间长短作为对其复杂度影响的参数,时间长则说明复杂度大,)通过分析后得出结论进行总结、展望。

3.相关知识BCH码定义:BCH 码1959 年由Hocquenghem、1960 年由Bose和Chandhari 分别独立提出。

BCH码是能够纠正多个随机错误的循环码,可以用生成多项式g(x)的根描述。

给定任一有限域GF(q)及其扩域GF(m q),其中q是素数或或者某一素数的幂,m为某一正整数。

设β='α∈GF(2m),l是任意整数,α是GF(2m)的本源元,若V是码元取自GF(2)上码长为n的循环码,他的生成多项式g(x)含有以下2t 个根β、2β、、、2tβ,则由g(x)生成的循环码称为二元BCH码,若β、2β、、、2tβ中有一个是本原元,则g(x)生成的码称为本原BCH码。

信息论编码实验一MATLAB的基本操作

信息论编码实验一MATLAB的基本操作

实验一 MATLAB 的基本操作一、实验目的1、掌握Matlab 软件使用的基本方法;2、熟悉Matlab 的数据表示、基本运算方法;3、熟悉Matlab 绘图命令及基本绘图控制。

二、实验仪器与软件1、PC 机 1台2、MATLAB7.0环境三、实验原理MATLAB 环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。

MATLAB 有3种窗口,即:命令窗口(The Command Window )、m-文件编辑窗口(The Edit Window )和图形窗口(The Figure Window ),而Simulink 另外又有Simulink 模型编辑窗口。

1、命令窗口(The Command Window )当MATLAB 启动后,出现的最大的窗口就是命令窗口。

用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。

在MATLAB 中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。

在命令窗口中输入该文件名,这一连串命令就被执行了。

因为这样的文件都是以“.m ”为后缀,所以称为m-文件。

2、m-文件编辑窗口(The Edit Window )我们可以用m-文件编辑窗口来产生新的m-文件,或者编辑已经存在的m-文件。

在MATLAB 主界面上选择菜单“File/New/M-file ”就打开了一个新的m-文件编辑窗口;选择菜单“File/Open ”就可以打开一个已经存在的m-文件,并且可以在这个窗口中编辑这个m-文件。

如,计算3[(12)34)]2+⨯-÷,只需在提示符“>>”后输入“((1+2)*3-4)/2^3”,然后按Enter 键。

该命令行涉及加、减、乘、除及幂运算符,MATLAB 运算的执行次序遵循的优先规则为:从左到右执行;幂运算具有最高的优先级,乘法和除法具有相同的次优先级,加法和减法有相同的最低优先级;使用括号可以改变前述优先次序,并由最内层括号向外执行。

【精品】纠错编码的MATLAB仿真课程设计精品

【精品】纠错编码的MATLAB仿真课程设计精品

编号:课程设计说明书题目:RS(255,223)纠错编码的MATLAB仿真目录1引言·····················错误!未指定书签。

1.1信道编码理论与技术的发展历程及应用·····错误!未指定书签。

1.2纠错编码简介················错误!未指定书签。

2Reed–Solomon编码概述············错误!未指定书签。

3Reed–Solomon编码抽象代数基础········错误!未指定书签。

3.1群·····················错误!未指定书签。

3.2环和域···················错误!未指定书签。

3.3有限域···················错误!未指定书签。

MATLAB-实验代码

MATLAB-实验代码

实验 11、ones 语句:Y = ones(n) %生成n×n 全1 阵Y = ones(m,n) %生成m×n 全1 阵Y = ones([m n]) %生成m×n 全1 阵Y = ones(d1,d2,d3…) %生成d1×d2×d3×…全1 阵或数组Y = ones([d1 d2 d3…]) %生成d1×d2×d3×…全1 阵或数组Y = ones(size(A)) %生成与矩阵A 相同大小的全1 阵2、find 语句:k = find(x) %按行检索X 中非零元素的点,若没有非零元素,将返回空矩阵。

[i,j] = find(X) %检索X 中非零元素的行标i 和列标j 。

[i,j,v] = find(X) %检索X 中非零元素的行标i 和列标j 以及对应的元素值v 。

实验 31、编写一M 函数,a 和x 作为函数参数输入,函数里面分别用if 结构实现函数表示1()1x a x f x a x a ax a-≤-⎧⎪⎪=-<<⎨⎪≥⎪⎩function output=function1(x,a)result=0;if x<=-aresult=-1;elseif x>-a&x<aresult=x/a;else x>=aresult=1;endoutput=[result]; 2、编写一M 函数,迭代计算132n n x x +=+,给出可能的收敛值,其中x 的初值作为函数的参数输入。

function output=function2(x)y=0;while 1y=3/(x+2);if abs(y-x)<0.000001break;else x=y;endendoutput=[y]; end3、编写一M函数,实现212!!nxx xe xn=+++++L L近似计算指数,其中x为函数参数输入,当n+1步与n步的结果误差小于0.00001时停止,分别用for和while 结构实现。

CRC纠错原理及其Matlab仿真

CRC纠错原理及其Matlab仿真

E(x)=xi+k-1+… +xi=xi×(xk-1+…+1)
所以 E(x) = xi(xk- 1+…+1)
G(x)
G(x)
现在, 选择 G(x), 使 x 不是 G(x)的一个因子, 因此 G(x)和 前面部分
的 xi 无关, 这样如果 G(x)是分子的因子, 那么它一定是(xk- 1+…+1)的因
方程, 则因子 x+1 使得 E(1)为 0, 这与前面 E(1)=1 矛盾。
很明 显, 两者不可能 同时发生, 如 果坚持 x+1 是 G(x)的一 个因子
的假设, 那么漏检错误损坏的奇数个比特就不可能成立, 换句话说, 如
果 x+1 是 G(x)的一个因子, 那么所有损坏奇 数个比特位的突发错误都
不允许诸如登陆或远程执行协议之类的协议存在 , 去掉对操作并非至 关重要的程序;
第十, 将所 有系统目录变 更为攻击者无法 看到其中的内容 、而用 户仍可执行的模式, 如 711 模式;
第十一, 只要有可能, 就将磁盘或数据信息安装设置为只读模式; 第十二, 将系统软件升级为最新版本, 并及时下载漏洞补丁; 第十三, 经常进行系统、数据备份, 防患于未然; 第十四, 使用安全工具, 加强系统安全性能; 第十五, 经常检测局域网整体安全状况, 发现 问题及时处理解决, 力 争 将 危 险 因 素 和 安 全 隐 患 解决 在 萌 芽 状 态 。 随着信息与网络技术的飞速发展, 网络安全 越来越成为一个潜在 的重大问题。网络特别是局域网的安全性问题, 随着网络的普及, 将会
子, 既然选择了 k≤r,那么 k- 1≤r,G(x)不可 能是一个 更低此方 多项式

如何利用Matlab技术进行信号编码

如何利用Matlab技术进行信号编码

如何利用Matlab技术进行信号编码信号编码(Signal Encoding)是指将信息转换成适合传输或存储的信号形式的过程。

在通信、数据存储、图像处理等领域中,信号编码起着至关重要的作用。

Matlab作为一种强大的数学计算工具和编程语言,能够提供丰富的信号编码技术和算法支持。

本文将介绍如何利用Matlab技术进行信号编码,并深入探讨其中的原理与应用。

一、信号编码概述信号编码是将原始信号转换为特定格式的过程,以便在传输或存储过程中能够准确地恢复出原始信息。

信号编码常用于模拟信号到数字信号的转换,或者用于将原始数字信息进行压缩,以减少传输或存储所需的资源。

常见的信号编码技术包括模拟信号采样与量化、调制与解调、线性编码、熵编码等。

二、模拟信号采样与量化在数字信号处理中,模拟信号采样与量化是将连续时间的模拟信号转换为离散时间的数字信号的过程。

Matlab提供了丰富的函数和工具箱,用于模拟信号的采样与量化。

1. 采样(Sampling)采样是指在时间上对模拟信号进行离散化处理,从而得到一系列的采样值。

Matlab可以使用“sinc”函数进行采样,通过选择合适的采样频率和采样点数,可以保证采样后的信号能够准确地还原原始模拟信号。

2. 量化(Quantization)量化是将采样得到的连续信号值转换为有限级别的离散值。

Matlab中的“quantize”函数可以实现信号的量化过程。

通过选择合适的量化级别和量化算法,可以平衡信号的准确性和编码的复杂度。

三、调制与解调调制与解调是将数字信号转换为模拟信号或将模拟信号转换为数字信号的过程。

调制(Modulation)是通过改变载波的某种属性来传输数字信号的方法,解调(Demodulation)则是将调制后的信号转换回原始信号的过程。

1. 调制在Matlab中,调制可以通过调制函数来实现,常见的调制方式包括频移键控(FSK)、相移键控(PSK)、正交幅度调制(QAM)等。

ldpc译码的matlab代码

ldpc译码的matlab代码

LDPC(Low-Density Parity-Check)码是一种优秀的纠错编码技术,具有较低的解码复杂度和接近容量的性能。

LDPC码的译码算法可以使用数学推导来实现,也可以借助计算机进行编程实现。

在本文中,我们将介绍如何使用MATLAB编写LDPC码的译码算法,并给出具体的代码实现。

一、LDPC码的基本原理LDPC码是一种线性分组码,由Gallager于1962年首次提出。

它是一种分布式稀疏矩阵编码,其校验矩阵的权重分布较为均匀,是一种充分利用了校验密度低的码。

LDPC码的译码算法通常采用迭代译码的方式,通过不断更新变量节点和校验节点的信息来逐步逼近发送端发送的原始信息。

LDPC码的译码算法有多种实现方式,其中以BP算法(Belief Propagation)最为常见。

二、BP算法的基本思想BP算法是一种迭代译码算法,其基本思想是将LDPC码的译码过程转化为图论中的消息传递过程。

在BP算法中,变量节点和校验节点之间通过消息传递的方式来更新各自的信息,并不断迭代直到收敛为止。

BP算法的收敛性和解码性能与LDPC码的结构和参数设置密切相关,因此需要仔细选择合适的算法参数和调整策略。

三、MATLAB代码实现1. 参数设置在MATLAB中,我们首先需要设置LDPC码的参数,包括码长、码率、校验矩阵等。

通过调用MATLAB中的矩阵运算库,我们可以方便地实现LDPC码的相关参数设置。

2. 译码算法实现接下来,我们编写LDPC码的译码算法。

在MATLAB中,我们可以利用向量化操作和矩阵运算来高效地实现BP算法。

需要注意的是,由于BP算法是一种迭代算法,我们需要设置适当的迭代次数和终止准则。

3. 性能评估我们可以利用MATLAB中的仿真工具来评估LDPC码的译码性能。

通过绘制误比特率曲线和分析译码性能参数,可以直观地了解LDPC码的表现,并进一步优化译码算法。

四、总结在本文中,我们介绍了LDPC码的基本原理和BP算法的实现方式,并给出了在MATLAB中的代码实现方法。

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

实验四 纠错编码基本实验一、实验目的1、通过实验理解线性分组码的基本原理;2、练习根据理论分析自行设计实验方法的能力。

二、实验内容1、已知一(10,4)线性分组码的生成矩阵为1001110111111000111001101101011101111001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦试用Matlab 求出该码的全部码字和最小汉明距离。

2、用Matlab 求x 15+1的所有因子,构造(15,4)循环码的所有可能的生成多项式;选择其中一个作为(15,4)循环码的生成多项式,求出所有的许用码字,并计算最小汉明距离。

三、实验原理1、线性生成码的原理线性分组码的构成方式是把信息序列分成每k 个码元一段,并由这k 个码元按一定规则产生r 个校验位,组成长度为n = k + r 的码字,用(n, k) 表示信息码元与校验位之间为线性关系。

一个[n ,k ]线性分组码,是把从信源输出的以k 个码元为一组的信息组m ,通过信道编码器后,变成长度为n ≥k 的码组(码字)c 作为[n ,k ]线性分组码的一个码字。

设GF(q )是一个含有q 个元素的有限数域,若每位码元的取值有q 种(取自GF(q )),则信息组m 共有k q 种不同的状态,因此,需要k q 个码字c 。

而长为n 的数组共有nq 个,二进制时(q =2)共有n 2个。

显然,n q 个n 维向量组成有限域GF(q )上的一个n 维线性空间V ,编码就是要在这个n 维线性空间中选出k q 个向量作为合法码字,其余的n q -k q 个向量为禁用码字。

如果选出的k q 个作为合法码字的向量的集合构成了V 的一个k 维线性子空间,则称它是一个q 进制[n ,k ]线性分组码。

如果值取自GF(q )上的[n ,k ]分组码的k q 个码字的集合C ,便构成了有限域GF(q )上的n 维线性空间V 的一个k 维线性子空间,则称C 是一个q 进制[n ,k ]线性分组码。

2、循环码的编码原理在编码时,首先需要根据给定循环码的参数确定生成多项式g (x ),也就是从的因子中选一个 (n-k )次多项式作为g (x );然后,利用循环码的编码特点,即所有循环码多项式A (x )都可以被g (x )整除, 来定义生成多项式g (x )。

根据上述原理可以得到一个较简单的系统循环码编码方法:设要产生(n,k )循环码,m (x )表示信息多 项式,则其次数必小于k ,而·m (x )的次数必小于n ,用·m (x )除以g (x ),可得余数r (x ),r (x )的次 数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统循环码。

下面就将以上各步处理加以解释:(1)用乘m (x )。

这一运算实际上是把信息码后附加上(n-k )个“0”。

例如,信息码为110,它相当于m(x)=+x。

当n-k=7-3=4时,·m(x)=+,它相当于1100000。

而希望的到得系统循环码多项式应当是A(x) = ·m(x) + r(x)。

(2)求r(x)。

由于循环码多项式A(x)都可以被g(x)整除,也就是:因此,用·m(x)除以g(x),就得到商Q(x)和余式r(x),即这样就得到了r(x)。

(3)编码输出系统循环码多项式A(x)为:例如,对于(7,3)循环码,若选用,信息码110时,则这时的编码输出为:1100101。

四、具体实验方法1、对于问题一,已知线性分组码的生成矩阵G,因为要产生系统码,而给定的生成矩阵不是典型生成矩阵,因此首先要将G通过一系列初等行变换,变为典型生成矩阵。

然后利用码组矩阵A等于信息矩阵C与典型生成矩阵G的乘积,将所得的矩阵A按照异或运算的规则进行相应的处理,即可求得所有的生成码字矩阵A(A中每一行为一个生成码字),将生成码字矩阵A的每一行与其他行进行比较,如果对应值相同则为0,不同则为1,将比较所得的结果保留在一个与A矩阵列数相同的矩阵M中,再对M中的所有行求和,则得到任意两个码字的汉明距离S,对所得结果S求最小值,即得到最小汉明距离。

2、对于问题二,首先利用函数cyclpoly函数来产生(15,4)循环码的所有可能的生成多项式,然后在所有可能的生成多项式中任选一个作为(15,4)循环码的生成多项式g,任选一个信息码元m1求其对应的循环码字,具体过程如下:1)将信息码元m1*x^11,即将信息码元左移11位,并将其由多项式形式转化为矩阵形式m22)用g 除m2得到余数R,由于在求解余数时是按照一般的算术运算计算的,而实际要求的为模2运算,所以要经过适当的转化,转化为模2运算,得到符合要求的R3)将m2与R 相加,即得到对应于信息码为m1的码字T4)将得到的码字T 进行循环移位运算,即得到所有码字5)利用与问题一同样的方法即可得到最小汉明距离五、实验源代码、仿真结果及分析1、已知一(10,4)线性分组码的生成矩阵为1001110111111000111001101101011101111001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦试用Matlab 求出该码的全部码字和最小汉明距离。

(1)源代码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]%生成矩阵%将生成矩阵标准化,化为典型生成矩阵B1=G(2,:),G(2,:)=G(3,:),G(3,:)=B1; %交换第2、3行的位置G(3,:)=(~G(3,:) & G(2,:))|(G(3,:) & (~G(2,:))); %将第2行的数据与第3行的数据进行异或运算作新的第3行的值G(4,:)=(~G(4,:) & G(2,:))|(G(4,:) & (~G(2,:))); %将第2行的数据与第4行的数据进行异或运算作为新的第4行的值G(1,:)=(~G(1,:) & G(3,:))|(G(1,:) & (~G(3,:))); %将第3行的数据与第1行的数据进行异或运算作为新的第1行的值G(4,:)=(~G(4,:) & G(3,:))|(G(4,:) & (~G(3,:))); %将第3行的数据与第4行的数据进行异或运算作为新的第4行的值B2=G(1,:),G(1,:)=G(3,:),G(3,:)=B2; %交换第1、3行的位置G(2,:)=(~G(2,:) & G(4,:))|(G(2,:) & (~G(4,:))); %将第4行的数据与第2行的数据进行异或运算作为新的第2行的值G(2,:)=(~G(2,:) & G(3,:))|(G(2,:) & (~G(3,:))); %将第3行的数据与第2行的数据进行异或运算作为新的第2行的值G(4,:)=(~G(4,:) & G(3,:))|(G(4,:) & (~G(3,:))); %将第3行的数据与第4行的数据进行异或运算作为新的第4行的值B3=G(3,:),G(3,:)=G(4,:),G(4,:)=B3; %交换第3、4行的位置%信息位码元矩阵为CC=[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]%生成的含有全部码字的矩阵AA=C*Gfor i=1:16for j=1:10if (A(i,j)==2) |(A(i,j)==4)A(i,j)=0;endif A(i,j)==3A(i,j)=1;endendend %由于进行乘法运算中各数是进行加和,必须改为异或运算,即使生成矩阵中只含有0和1,以上即是运用异或运算的规则进行转化%求最小汉明距离t=1;for i=1:15for j=i+1:16M(t,:)=(A(i,:)~=A(j,:));t=t+1;endend %分别比较两行中不同的元素S=(sum(M,2))'%将M矩阵的每一行求和,得出任意两个码字之间的距离d=min(S) %最小汉明距离(2)仿真结果以及仿真分析1) 将生成矩阵进行标准化,化为典型生成矩阵如下:分析及说明:通过一系列的初等行变换将最开始的一般生成矩阵转换为典型生成矩阵,由以上矩阵G可知,为一个标准矩阵。

2)全部码字如下:说明以及分析:矩阵A的每一行表示(10,4)线性分组码的一个码字,每一个码字由10位构成,包括四位信息位和六位监督位。

可知,(10,4)线性分组码总共有16个许用码字。

3)任意两个码字之间的汉明距离如下:4)最小汉明距离为d=22、用Matlab求x15+1的所有因子,构造(15,4)循环码的所有可能的生成多项式;选择其中一个作为(15,4)循环码的生成多项式,求出所有的许用码字,并计算最小汉明距离。

(1)源代码syms xG=cyclpoly(15, 4,'all') %求出所有的生成多项式g=G(2,:) %选择任意一个作为(15,4)循环码的生成多项式r=15-4 %监督位数m1=x^3+x^2+1 %信息码元m11=expand(x^r*m1) %用x^r乘以m1,相当于对m1进行左移r位的操作m2=sym2poly(m11) %将多项式转化为矩阵表示形式[Q,R] = DECONV(m2,g) %求m2除以g所得的余数R=abs(R)for i=1:length(R)if R(i)==2R(i)=0endend %由于在求解余数时是按照一般的算术运算计算的,而实际要求的为模2运算,转化为模2运算T=R+m2 %T为生成的一个循环码字T2(1,:)=Tfor i=1:14T2(i+1,:)=circshift(T2(i,:),[0,1])end %T2为将得到的第一个循环码字进行循环,得到其他的码字Y=[zeros(1,15);T2] %Y矩阵为生成的全部码字%求最小汉明距离t=1;for i=1:15for j=i+1:16M(t,:)=(Y(i,:)~=Y(j,:));t=t+1;endend %分别比较两行中不同的元素S=(sum(M,2))' %将M矩阵的每一行求和,得出任意两个码字之间的距离d=min(S) %最小汉明距离(2)仿真结果1)构造出(15,4)循环码的所有可能的生成多项式如下:说明以及分析:矩阵G的每一行为一个生成多项式的矩阵表示形式,g1、g2、g3为(15,4)循环码的所有生成多项式,可知总共有三个生成多项式的。

相关文档
最新文档