卷积码的仿真与分析-信息论报告
【报告】卷积码实验报告
【报告】卷积码实验报告一、实验目的本次卷积码实验的主要目的是深入理解卷积码的编码与译码原理,掌握其在数字通信系统中的应用,并通过实际实验操作和结果分析,评估卷积码的纠错性能和对通信质量的改善效果。
二、实验原理(一)卷积码的基本概念卷积码是一种有记忆的非分组码,它将输入的信息序列经过特定的编码器生成输出的码序列。
卷积码的编码过程不仅取决于当前输入的信息位,还与之前的若干个信息位有关。
(二)编码原理卷积码的编码器通常由若干个移位寄存器和模 2 加法器组成。
输入的信息位在时钟的控制下依次进入移位寄存器,同时与寄存器中的内容进行模 2 加法运算,生成输出的编码位。
(三)译码原理卷积码的译码方法有多种,常见的有维特比译码算法。
维特比译码算法基于最大似然准则,通过在码的网格图上寻找最有可能的路径来实现译码。
三、实验环境与设备本次实验在计算机上进行,使用了以下软件和工具:1、 MATLAB 编程环境,用于实现卷积码的编码、传输和译码过程,并进行性能分析。
2、通信系统仿真工具,用于构建通信系统模型,模拟信号的传输和接收。
四、实验步骤(一)编码实现1、在 MATLAB 中定义卷积码的编码器结构,包括移位寄存器的数量和连接方式,以及模 2 加法器的位置。
2、编写编码函数,输入信息序列,按照编码器的工作原理生成编码后的序列。
(二)信道传输1、模拟加性高斯白噪声信道,设置不同的信噪比条件。
2、将编码后的序列通过信道传输,引入噪声干扰。
(三)译码实现1、使用维特比译码算法对接收序列进行译码。
2、编写译码函数,输入接收序列和信道参数,输出译码后的信息序列。
(四)性能评估1、计算误码率,即错误译码的比特数与总传输比特数的比值。
2、绘制误码率曲线,分析卷积码在不同信噪比条件下的纠错性能。
五、实验结果与分析(一)不同卷积码参数对性能的影响1、改变卷积码的约束长度,观察其对纠错性能的影响。
结果表明,约束长度越长,卷积码的纠错能力越强,但编码效率会有所降低。
通信综合课程设计 卷积码的实现与仿真
文章标题:深度解析通信综合课程设计中卷积码的实现与仿真引言:通信综合课程设计是通信工程领域的重要教育环节,而卷积码作为其中的重要内容之一,其实现与仿真更是学生们需要深入了解和掌握的技能。
本文将从简到繁地讨论通信综合课程设计中卷积码的实现与仿真,帮助读者更好地理解和掌握这一重要内容。
第一部分:通信综合课程设计概述1.1 通信综合课程设计的重要性在通信工程领域,通信综合课程设计是学生将在实际工作中常常用到的实践环节,通过这一环节,学生们可以将所学的理论知识应用到实际项目中,提高实践能力和解决问题的能力。
1.2 通信综合课程设计的内容概述通信综合课程设计内容丰富多样,包括调制解调、信道编码、卷积码、纠错码等多个主题,而卷积码的实现与仿真是其中的重要部分之一。
第二部分:卷积码的基本原理2.1 卷积码的定义卷积码是一种线性时不变系统(LTI)编码器,在通信系统中起到纠错码的作用。
2.2 卷积码的编码和解码原理通过引入时延、存储元素和加法器,实现对输入序列进行编码;而解码过程则是通过译码器进行,根据输入序列和已知的编码规则进行解码。
第三部分:通信综合课程设计中卷积码的实现3.1 卷积码的软件实现在通信综合课程设计中,学生们可以利用MATLAB等软件工具,编写程序实现卷积码的编码和解码过程,从而加深对卷积码原理的理解。
3.2 卷积码的硬件实现除了软件实现,通信综合课程设计中也常常涉及到卷积码的硬件实现,学生们可以通过FPGA等硬件开发评台,实现卷积码的编码和解码过程。
第四部分:通信综合课程设计中卷积码的仿真4.1 仿真环境的建立在通信综合课程设计中,学生们需要建立仿真环境,包括信道模型、信号源、噪声源等,以便对卷积码的性能进行评估。
4.2 仿真结果的分析通过仿真实验,学生们可以得到卷积码在不同信噪比下的误码率曲线等性能参数,从而对卷积码的性能有更深入的了解。
结论:通过本文的深入讨论,相信读者已经对通信综合课程设计中卷积码的实现与仿真有了更深入的理解。
卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验
卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验一、实验目的实现卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验,观察交织编码分别在白噪声信道和衰落信道下系统误码率的影响,分析原因。
二、实验原理信道编码中采用交织技术,可打乱码字比特之间的相关性,将信道中传输过程中的成群突发错误转换为随机错误,从而提高整个通信系统的可靠性。
交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。
其中线性交织编码是一种比较常见的形式。
所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。
这里把这个矩阵称为交织矩阵。
如图1所示,数据以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的顺序进入交织矩阵,交织处理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的顺序从交织矩阵中送出,这样就完成对数据的交织编码,如图1所示。
还可以按照其他顺序从交织矩阵中读出数据,不管采用哪种方式,其最终目的都是把输入数据的次序打乱。
如果aij只包含1个数据比特,称为按比特交织;如果aij包含多个数据比特,则称为按字交织。
接收端的交织译码同交织编码过程相类似。
图 1 交织编码矩阵一般来说,如果有n个(m,k)码,排成,n×m矩阵,按列交织后存储或传送,读出或接收时恢复原来的排列,若(m,k)码能纠t个错误,那么交织后就可纠m个错误。
对纠正信道传输过程中出现的突发错误效果明显,如图2所示。
图2 交织编码示例GSM中使用这种比特交织器。
其交织方式为将信道编码后的每20ms的数据块m=456b拆分到8组中,每组57b,然后这每组57 b分配到不同的Burst中三、实验流程卷积交织解卷积交织四、源程序1、交织程序1)卷积交织function [aa]=jiaozhi(bb,n)%jiaozhi.m 卷积交织函数n=28; %分组长度%bb 卷积交织前原分组序列%aa 卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 17 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7; 22 16 10 4 26 20 14 ];%交织矩阵bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28];for i=1:naa(i)=bb(cc(i));end(2)循环等差交织function [aa]=jiaozhi_nocnv(bb,n)%jiaozhi_nocnv.m 循环等差交织函数n=28; %分组长度%bb 循环等差交织前原分组序列%aa 循环等差交织后还原分组序列%序号重排方式:bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法aa(n+1-i)=bb(j);end2、解交织程序(1)解卷积交织function [bb]=jiejiaozhi(aa,n)%jiejiaozhi.m 解卷积交织函数n=28;% 分组长度%aa 解卷积交织前原分组序列%bb 解卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 27 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7 ;22 16 10 4 26 20 14 ]; aa=[ 1 8 15 22 23 2 9 16 17 24 3 10 11 18 25 4 5 12 19 26 27 6 13 20 21 28 7 14 ]; for i=1:nbb(cc(i))=aa(i);end(2)解循环等差交织function [bb]=jiejiaozhi_nocnv(aa,n)%jiaozhi_nocnv.m 解循环等差交织函数n=28;% 分组长度%aa 解循环等差交织前原分组序列%bb 解循环等差交织后还原分组序列%序号重排方式:aa=[ 1 24 19 14 9 4 27 22 17 12 7 2 25 20 15 10 5 28 23 18 13 8 3 26 21 16 11 6];j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法bb(j)=aa(n+1-i);End交织码通常表示为(M,N),分组长度L=MN,交织方式用M行N列的交织矩阵表示。
卷积码实验报告
卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
无线光通信卷积交织与编码的实验及仿真研究
万方数据 万方数据第4期宋效正等:无线光通信卷积交织与编码的实验及仿真研究·15·也受限,我们研究将卷积交织结合(1/2,7)卷积编码的方案用于无线光通信系统。
卷积交织器【9】相对于块交织和随机交织器,所需的存储空间降低4倍,交织延迟也能降低一半;另外一般低信噪比时,卷积编码比同等复杂度的分组码有更好的性能。
为了方便对通信系统的性能进行评估和相关的理论仿真研究,根据无线光信道的特征,地面无线光通信系统的建模如图2所示,在此基础上也完成了相应的外场无线光通信实验系统,以进一步检验无线光通信系统的性能。
图2无线光通信系统模型3实验系统设计和研制无线光通信的实验系统装置如图3所示,发射和接收光学望远镜采用收发分离式,这样可以降低干扰;而且实验装置能够自由调节方位,通过一个单筒望远镜很容易实现光路对准;此外通信光机利用基座的重量和固定的三角支架降低周围环境抖动对光束的影响。
图3无线光通信实验系统装置外场无线光通信实验系统的原理框图如图4所示。
信源经过码率为l/2的卷积编码后,信道的数据传输速率达到34.368Mbi“s。
为了使衰落造成的突发错误离散化,通过合理控制eplc6FPGA的大容量双端口RAM的读写地址即可实现(16,4096)的Femoy型一J比特卷积交织设计。
交织后的二进制数据流,00K方式调制激光器,调制光束经过准直系统从光机的发射端输出,然后经远处角锥棱镜反射后,此光束再次进入光机的接收系统,接着完成光电检测、信号的时钟同步和数据判决等。
二卷卷发射进加帧积积———+光学—'制+头编———————+交填零系统流码织角维锥误棱特解帧时钟接收._镜码比.一交检._数据光学观译织测恢复系统测码图4外场无线光通信系统原理图为了保证接收端正确解比特交织和Viterbi译码,该系统采用了帧同步技术设训10J。
在进行比特卷积交织时,帧头和编码后的第一信息比特从交织器的第一行输出,直通。
卷积码实验报告
卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
matlab(n,k,m)卷积码原理及仿真
matlab(n,k,m)卷积码原理及仿真====================卷积码是一种重要的纠错码,它在通信系统中扮演着重要的角色。
特别是在高噪环境下,卷积码具有较好的性能表现,因此被广泛用于卫星通信、光纤通信等领域。
本文将介绍Matlab中实现(n,k,m)卷积码的基本原理以及仿真过程。
一、卷积码原理-------卷积码是一种非线性编码技术,它通过将信息序列与多个冗余序列进行卷积运算,生成新的编码序列。
卷积码具有较高的编码增益,同时具有较低的编码复杂度。
在(n,k,m)卷积码中,n表示编码长度,k 表示信息比特数,m表示每个码字所包含的冗余比特数。
二、Matlab仿真环境---------Matlab是一种强大的数学计算和仿真软件,它提供了丰富的工具和函数库,可以方便地实现各种数字通信系统。
在Matlab中,我们可以利用卷积码工具箱实现(n,k,m)卷积码的编码、译码和仿真。
三、仿真步骤------1.定义系统参数:包括信息比特数k、编码长度n、冗余比特数m 等。
2.生成随机信息序列:在Matlab中,可以使用rand函数生成随机比特序列作为信息序列。
3.编码:使用卷积码工具箱中的函数实现编码过程,生成冗余比特序列。
4.添加噪声:在通信系统中,噪声是不可避免的。
为了模拟高噪环境,可以在编码后的数据上添加高斯噪声。
5.译码:使用卷积码工具箱中的函数实现译码过程,恢复原始信息序列。
6.仿真结果分析:通过比较译码结果和原始信息序列,可以评估卷积码的性能。
四、示例代码------以下是一个简单的Matlab代码示例,用于实现(7,4,3)卷积码的编码、译码和仿真:```matlab%定义系统参数k=4;%信息比特数n=7;%编码长度m=3;%冗余比特数data=randi([0k-1],n,1);%生成随机信息序列noise=sqrt(0.1)*data+sqrt(0.9)*(randn(n,1));%添加高斯噪声con_code=codegen(k,m);%编码encoded=conv_mat(data',con_code');%卷积码矩阵表示法decoded=indelcod(con_code);%译码%比较译码结果和原始信息序列ifall(decoded==data)disp('译码成功!')elsedisp('译码失败!')end```五、总结----Matlab作为一种强大的数学计算和仿真软件,提供了丰富的工具和函数库,可以方便地实现各种数字通信系统。
卷积编码设计与仿真实验报告
卷积编码设计与仿真实验报告一、实验目的了解卷积码对信号的纠错性能,掌握维特比译码算法,分析卷积码不同码率下纠错能力的强弱,深刻理解CCSDS标准、信道编译码等相关概念和算法。
二、实验内容1、自己编码实现(2,1,3)卷积码的编译码,对比不同信噪比条件下,是否采用编码对于误码率性能的影响;2、基于MATLAB自带的vitdec函数实现对(2,1,7)卷积码以及2/3、3/4码率删除码的编译码,并对于不同码率抗噪声能力的强弱;3、构造BPSK调制、加性高斯白噪声的传输环境。
三、实验原理卷积码一般表示为(n,k,N)的形式,即将k个信息比特编码为n个比特的码组,N为编码约束长度,说明编码过程中相互约束的码段个数。
卷积码编码后的n个码元不仅与当前组的k个信息比特有关,还与前N-1个输入组的信息比特有关。
编码过程中相互关联的码元有N*n个。
R=k/n是编码效率。
编码效率和约束长度是衡量卷积码的两个重要参数。
典型的卷积码一般选n,k较小,但N值可取较大(>10),以获得简单而高性能的卷积码。
1、卷积码的编码原理卷积码的编码器一般比较简单,为一个具有k个输入端,n个输出端,m 级移位寄存器的有限状态有记忆系统。
下图所示为(2,1,7)卷积码的编码器。
图1 (2,1,7)卷积码编码器若输入序列为u=(u0u1u2u3……),则对应两个码字序列 C1=(ca0ca1ca2ca3……)和C2=(cb0cb1cb2cb3……),相应的编码方程可写为 P1=u*C1,P2=u*C2,P=(P1,P2)。
“*”符号表示卷积运算,P1,P2表示编码器的两个冲激响应,即编码器的输出可以由输入序列和编码器的两个冲击响应卷积而得到,故称为卷积码。
这里的冲激响应指:当输入为[1 0 0 0 0 … … ]序列时,所观察到的两个输出序列值。
由于上图N 值为7,故冲激响应至多可持续到第7位,可写为P1=[1 1 1 1 0 0 1],P2=[1 0 1 1 0 1 1]然后将两个输出端的码字序列合并为一个码字序列为C=(ca0cb0ca1cb1ca2cb2……)。
卷积编码实验报告
实验名称:___ 卷积编码_______1、使用MATLAB进行卷积编码的代码编写、运行、仿真等操作;2、熟练掌握MATLAB软件语句;3、理解并掌握卷积编码的原理知识。
二、实验原理卷积码是由Elias于1955 年提出的,是一种非分组码,通常它更适用于前向纠错法,因为其性能对于许多实际情况常优于分组码,而且设备较简单。
卷积码的结构与分组码的结构有很大的不同。
具体地说,卷积码并不是将信息序列分成不同的分组后进行编码,而是将连续的信息比特序列映射为连续的编码器输出符号。
卷积码在编码过程中,将一个码组中r 个监督码与信息码元的相关性从本码组扩展到以前若干段时刻的码组,在译码时不仅从此时刻收到的码组中提取译码信息,而且还可从与监督码相关的各码组中提取有用的译码信息。
这种映射是高度结构化的,使得卷积码的译码方法与分组译码所采用的方法完全不同。
可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。
对于某个特定的应用,采用分组码还是卷积码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。
(一)卷积编码的图形表示卷积码的编码器是由一个有k 个输人位,n 个输出位,且有m 个移位寄存器构成的有限状态的有记忆系统,其原理如图1所示。
图1 卷积码编码器的原理图描述这类时序网络的方法很多,它大致可分为两大类型:解析表示法与图形表示法。
在解析法中又可分为离散卷积法、生成矩阵法、码多项式法等;在图形表示法中也可分为状态图法、树图法和网络图法等。
图2给出的是一个生成编码速率为1/2 卷积码的移位寄存器电路。
输人比特在时钟触发下从左边移人到电路中,每输入一位,分别去两个模2加法器的输出值并复用就得到编码器的输出。
对这一编码,每输入一比特就产生两个输出符号,故编码效率为1/2。
可以看出,每个特定的输入比特不仅影响本时间间隔内的编码器输出,同时还影响紧接着的下两个输入比特时间间隔的编码器输出。
卷积编码由移位寄存器的阶数、输出的数量(即模2加法器的个数)和移位寄存器与模2 加法器间的连接所决定。
卷积码编译码matlab仿真
一、概述卷积码是一种常用的编码技术,用于提高数字通信系统的可靠性和抗干扰能力。
而编码的解码过程则需要运用编译码技术,以恢复原始数据。
Matlab作为一种强大的工程仿真软件,可以用来对卷积码编译码进行仿真分析,帮助工程师们更好地理解和优化卷积码系统,提高通信系统的性能。
二、卷积码原理1. 卷积码的概念卷积码是一种线性块码,它采用移位寄存器和模2加法器进行编码,通过引入冗余比特来提高信号的可靠性。
卷积码的编码过程可以简单描述为:将输入信息数据与特定的生成多项式进行卷积运算,得到编码后的输出数据。
2. 卷积码的特点卷积码具有较高的编码效率和能够很好地控制码长、纠错能力等特性,因此在实际通信系统中得到广泛应用。
三、编译码原理1. Viterbi算法卷积码的译码过程通常采用Viterbi算法,它是一种最大似然译码算法,通过计算最小距离路径的方式来进行译码。
Viterbi算法能够有效地对卷积码进行解码,提高译码的准确性。
2. 编译码的实现在Matlab中,编译码的实现通常是通过编写一定的程序来模拟Viterbi算法的译码过程。
通过仿真分析,可以评估不同的编码方案对通信系统性能的影响。
四、Matlab仿真环境1. Matlab的特点Matlab作为一种强大的仿真软件,具有丰富的工具和函数库,能够方便地进行数字通信系统设计与仿真分析。
Matlab提供了直观的图形界面和强大的数据处理能力,可用于展示仿真结果和进行数据分析。
2. 使用Matlab进行卷积码编译码仿真在Matlab环境中,可以编写程序来实现卷积码的编码和Viterbi算法的译码过程。
通过调用Matlab中的工具函数和绘图函数,可以直观地展示通信系统的性能指标,并对比不同编码方式的性能差异。
五、仿真实例分析1. 卷积码编码仿真我们可以编写Matlab程序,实现对卷积码的编码过程。
通过模拟不同的编码率和约束长度,可以观察到编码后的效果,并评估编码的性能。
对卷积码的编译码实现进行仿真编程和仿真实验
实验二:卷积码编译器1120510217 吴宏晶一、实验目的对卷积码的编译码实现进行仿真编程和仿真实验二、仿真软件LabVIEW 2013版(前面版用于数据显示,后面板为程序源代码)三、实验流程1.卷积码的编码以(3,1,2)卷积码为例,下图为LabVIEW仿真前面板每一时刻都有一个信息比特进入第一个寄存器中,如图中D1。
编码器利用D1和D2这两个寄存器来产生3比特的输出码字如图中所示C1、C2、C3。
编码的规则是C1=M1,C2=M1+D1+D2,C3=M1+D2。
定义D1和D2的状态为S1和S2,S1和S2共有四种组合状态。
描述的在不同的输入比特状态下,编码器对应的输出和下一个时刻的状态变化。
它们的转化关系如下图所示2.卷积码的译码卷积码的译码采用维特比译码法。
维特比算法的思路:在每个节点处,留下到达该节点处局部度量最大的路径,丢弃其余的局部路径,这条留下来的路径叫做幸存路径。
如果所有幸存路径在某个支路处是重合的,就可以输出这个支路上数据的译码结果。
为了避免延时,在当前局部路径中,找出局部累积量最大的,沿着这个路径回退N步会有一个分支,输出这个分支的数据。
(3,1,2)卷积码t0~t5六个时刻,第一次选取幸存路径发生在从t2到t3转移时刻。
四、实验源程序说明1.卷积码的编码程序源代码如下图所示1.坐标1处是输入码元数组,它经过一个FOR循环依次进入循环中。
2.坐标2处是D1和D2两个移位寄存器,D1的结果在一次循环过后移入D2中。
3.坐标3处表示C1的值为每次直接进来的码元值。
4.坐标4处为C2的计算值,对局部进行放大,有如下图说明:C2=D1+D2+M1(模2加法),M1为码元值。
因为没有模2加法的函数,故调用除2函数,再对余数与0进行比较是否相等,若结果为TRUE,则表明C2为2的倍数,即为0,故将0送入C2中,否则将1送入C2中。
5.坐标5处为C3的计算值,对局部进行放大,有如下图说明:C3=M1+C2,故将两数相加,再对结果与1比较,因为只有01或10相加才为1,其他值为0或者2,故若判断结果为TRUE,则将1的值赋值给C3,如上图所示。
34卷积码编码原理分析与建模仿真
3/4卷积码编码原理分析与建模仿真一、摘要卷积码是一种性能优越的信道编码。
它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。
随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。
本文简明地介绍了卷积码的编码原理和Viterbi译码原理。
并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。
最后,通过在仿真过程中分析了卷积码误比特率与信噪比之间的关系,及卷积码与非卷积码的对比。
经过仿真和实测,并对测试结果作了分析。
关键词:卷积码编码建模 SIMULINK仿真目录一、摘要 ................................................................................................................................................................. - 1 -二、设计目的和意义 ............................................................................................................................................. - 2 -三、设计原理 ......................................................................................................................................................... - 3 -3.1 卷积码基本概念 ...................................................................................................................................... - 3 -3.2 卷积码的结构 .......................................................................................................................................... - 3 -3.3 卷积码的解析表示 .................................................................................................................................. - 4 -3.4 卷积码的译码 .......................................................................................................................................... - 4 -3.4.1 卷积码译码的方式........................................................................................................................ - 4 -3.5.2 卷积码的Viterbi译码 .................................................................................................................. - 5 -四、详细设计步骤 ................................................................................................................................................. - 6 -4.1 卷积码的仿真 .......................................................................................................................................... - 6 -4.1.1 SIMULINK仿真模块的参数设置及意义 ................................................................................. - 6 -五、设计结果及分析 ........................................................................................................................................... - 11 -5.1不同信噪比对卷积码的影响.................................................................................................................. - 11 -5.2卷积码的对比 ........................................................................................................................................ - 12 -六、总结 ............................................................................................................................................................... - 14 -七、体会 ............................................................................................................................................................... - 14 -八、参考文献 ....................................................................................................................................................... - 14 -二、设计目的和意义因为信道中信号不可避免会受到干扰而出错。
2019年卷积码实验报告-word范文模板 (18页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==卷积码实验报告篇一:卷积码实验报告 (C++)计算机科学与工程系一、实验名称:卷积码二、实验环境软件环境:Windows 201X,Microsoft Visual C++6.0硬件环境:P4,2.4GHz,256内存,IBM-PC及兼容机三、实验目的了解卷积码的编码原理,给定基本监督矩阵,导出一致监督矩阵、基本生成矩阵、一致生成矩阵,能够通过监督矩阵或生成矩阵编出截断码或非截断码。
四、实验过程与实验结果源程序:#include<iostream>#include<string>using namespace std;class JuanjiCode{private:int i,j,t;int n0,k0,r0,m;int **h,**H,**g,**G;//实现编码所需变量int code;string Info_str,Code_str;int total_num,extra_num;public:void Initializing();void Trans_h_to_H();void Trans_h_to_g();void Print_g();void Trans_g_to_G();void Print_G();//编码void Before_Encoding();//编码前的准备int Check(string);void Encoding();};/**********************初始化模块**********************/ void JuanjiCode::Initializing(){cout<<"请输入码字长n0=";cin>>n0;cout<<"请输入信息元个数k0=";cin>>k0;cout<<"请输入关联长度m=";cin>>m;//监督元个数r0=n0-k0;//动态分配存储单元h=new int*[r0];for(i=0;i<r0;i++)h[i]=new int[m*n0];cout<<"请输入("<<n0<<","<<k0<<","<<m<<")卷积码的基本监督矩阵h["<<r0<<"]["<<m*n0<<"]:"<<endl;for(i=0;i<r0;i++)for(j=0;j<m*n0;j++)cin>>h[i][j];//检测,输出hcout<<"您输入的基本监督矩阵h["<<r0<<"]["<<m*n0<<"]如下:\n"<<endl; for(i=0;i<r0;i++){for(j=0;j<m*n0;j++){cout<<h[i][j];if((j+1)%n0==0)cout<<" ";}cout<<endl;}cout<<endl;//动态分配存储单元H=new int*[m*r0];for(i=0;i<m*r0;i++)H[i]=new int[m*n0];g=new int*[m*k0];for(i=0;i<m*k0;i++)g[i]=new int[n0];G=new int*[m*k0];for(i=0;i<m*k0;i++)G[i]=new int[m*n0];}//由基本监督矩阵h导出一致监督矩阵H并打印输出void JuanjiCode::Trans_h_to_H(){cout<<"该卷积码对应的一致监督矩阵H["<<m*r0<<"]["<<m*n0<<"]如下(未输出部分全为0):\n"<<endl;for(t=0;t<m;t++){for(i=0;i<r0;i++){for(j=0;j<(t+1)*n0;j++){H[t*r0+i][j]=h[i][(m-t-1)*n0+j];cout<<H[t*r0+i][j];。
卷积码编译码实验报告
厦门理工学院实验报告书课程名称:信息论与编码实验实验名称:卷积码编译码m•个有效的寄存器单元,而输出移位寄存器仅中输入移位寄存器最多只有k起一个并串转换作用。
因此称参量m为卷积吗的记忆长度(段)2、维比特译码原理它的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值五、实验内容在MATLAB环境下卷积码编/解码器的实现。
1、主函数main.mclear;clc;msg = randint(1,20,[0,1])word = encode_conv213(msg)word(1) =~word(1); %信道中存在污染,人为的模拟传输过word(10) =~word(10); %程中的出错码字word(15) =~word(15);word1=wordmsg_1 = decode_conv213(word1)msg-msg_12 、状态积state_machine.mfunction [output,nextState] = state_machine(input,current_state)output(1) = mod(current_state(1)+current_state(3),2);output(2) = mod(input+current_state(2)+current_state(1),2);nextState(1) = current_state(2);nextState(2) = current_state(3);nextState(3) = input;3、汉明距离hamming_distance.mfunction distance = hamming_distance(a,b)temp = a+b;temp = mod(temp,2);distance = sum(temp);4 、213编码程序encode_conv213.mfunction word = encode_conv213(msg)word = zeros(1,length(msg)*2);current = [0 0 0];for i = 1:length(msg)[out,next] = state_machine(msg(i),current);current = next;word(2*i-1) = out(1);word(2*i) = out(2);End5、213维比特译码decode_conv213.mfunction msg = decode_conv213(word)chip = 10; %初始状态选十个信息for i = 1:2^chipM(i,:) = de2bi(i-1,chip); %把所有可能性按二进制输出W(i,:) = encode_conv213(M(i,:));%得到相应的二进制编译后的码字D(i) = hamming_distance(W(i,:),word(1:chip*2));%与出错码字对比得到汉明距end[val,index] = sort(D);%val中存汉明距从小到大排列,index中存对应val数据所在位置ret_msg = zeros(1,length(word)/2); %开辟译出码字的存放空间for i = 1:6%1024种选择6种最小距离,并输出在ret_msg中,最小汉明距存于ret_dis ret_msg(i,1:chip) = M(index(i),:);ret_dis(i) = D(index(i));enditer = (length(word)-chip*2)/2; %剩余要译出的码字个数for i=1:iter %迭代过程for j=1:6msg_temp1 = [ret_msg(j,1:chip+i-1) 0]; %下一状态出“0”msg_temp2 = [ret_msg(j,1:chip+i-1) 1]; %下一状态出“1”word_temp1 = encode_conv213(msg_temp1);%下一状态为“0”时的编码word_temp2 = encode_conv213(msg_temp2);%下一状态为“1”时的编码dis_temp1 = hamming_distance(word_temp1,word(1:chip*2+2*i));dis_temp2 = hamming_distance(word_temp2,word(1:chip*2+2*i)); %算两种汉明距if (dis_temp1<dis_temp2)ret_msg(j,1:chip+i) = msg_temp1;ret_dis(j) = dis_temp1;elseret_msg(j,1:chip+i) = msg_temp2;ret_dis(j) = dis_temp2;%选择较小汉明距的状态储存并输出在ret_msg中,最小汉明距存于ret_disendendend[val,index] = sort(ret_dis); %把最终选择的6种最小汉明距按从小到大排列msg =ret_msg(index(1),:); %选出维特比译码最小的距离所译出的信息六、实验数据记录及分析(包括源程序清单及运行结果):。
卷积码实验报告
现代编码理论基于MATLAB的卷积码编码及译码仿真姓姓名名:闫嘉川学学号号:1433170所在院系:电子与信息工程学院实验名称:基于MAATLAB的卷积码编码及译码仿真实验目的:卷积码是一种性能优越的信道编码。
它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。
随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。
本实验简明地介绍了卷积码的编码原理和Viterbi译码原理。
并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。
最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。
经过仿真和实测,并对测试结果作了分析。
实验原理:1、卷积码编码原理卷积码是一种性能优越的信道编码,它的编码器和解码器都比较易于实现,同时还具有较强的纠错能力,这使得它的使用越来越广泛。
卷积码一般表示为(n,k,K)的形式,即将 k个信息比特编码为 n 个比特的码组,K 为编码约束长度,说明编码过程中相互约束的码段个数。
卷积码编码后的 n 各码元不经与当前组的 k 个信息比特有关,还与前 K-1 个输入组的信息比特有关。
编码过程中相互关联的码元有 K*n 个。
R=k/n 是编码效率。
编码效率和约束长度是衡量卷积码的两个重要参数。
典型的卷积码一般选 n,k 较小,K 值可取较大(>10),但以获得简单而高性能的卷积码。
卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。
2、卷积码Viterbi译码原理卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。
概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
卷积码的仿真与分析-信息论报告
三级项目报告课程名称:信息论与编码___________ 课程设计题目:卷积码的仿真与分析_______指导教师:______________系别:专业:学号:姓名: _____合作者完成时间: 2012 年 6 月 10 日至 6 月 14 日成绩:评阅人:1. 卷积码及其编译码原理概述非分组码的卷积码的编码器是在任一段规定时间内产生n 个码元,但它不仅取决于这段时间中的k 个信息位,还取决于前(K -1)段规定时间内的信息位,这K 段时间内的码元数目为K ·k ,称参数K 为卷积码的约束长度,每k 个比特输入,得到n 比特输出,编码效率为k /n ,约束长度为K 。
在k =1的条件下,移位寄存器级数m =K -1。
卷积码一般可用(n ,k ,K )来表示,其中k 为输入码元数,n 为输出码元数,而K 则为编码器的约束长度。
典型的卷积码一般选n 和k ( k < n ) 值较小,但约束长度K 可取较大值(K <10),以获得既简单又高性能的信道编码[6]。
卷积码是1955年Elias 最早提出,1957年Wozencraft 提出了序列译码。
1963年Massey 提出了一种性能稍差,但比较实用的门限译码方法。
1967年维特比(Viterbi)提出了最大似然译码。
它对存储器级数较小的卷积码的译码很容易实现,称为维特比算法或维特比译码。
图1、二进制卷积码的编码器图2给出了(3,1,2)二进制卷积码编码器。
在每一时间单位,输入一个比特信息i m,同时存贮器内的数据向右移一位,产生3个比特的输出i c ,其中一个是输入比特i m,两个是校验比特,1i p ,,2i p 。
图2由图可知: ,12,212i i i i i i i p m m p m m m ---=⊕=⊕⊕因为校验比特是输入信息元i m的模2和,它们是线性关系,所以这类卷积码是线性码。
称i c为卷积码的一个子码或码段,它不仅与当前输入信息有关,还与前2个(m )时间单位的输入信息有关,即和前2个子码有关;而且i m要经过2个时间单位才能移出存贮器,所以i c 也参与了后2个子码中的校验运算,称1N m =+为编码约束度,说明编码过程中互相约束的码段个数。
移动通信实验报告卷积编码
西安邮电学院移动通信实验报告实验名称:卷积编码专业:通信工程系班级:通工0713班姓名:***学号:********实验日期:一、 实验目的1、 对卷积码要掌握2、 根据原理框图计算其输出3、 掌握气生成矩阵4、 熟悉软件实现的算法二、卷积编码原理(2,1,3)卷积编码方框图:(2,1,3)码,n=2 模2加法器个数,k=1 输入维数,m=2 移位寄存器个数,一个转换开关使输出成串行。
对于信息序列()012,,,u u u u =,编码器的两个输出为: (1)(1)(1)(1)012(2)(2)(2)(2)012(,,,)(,,,)c c c c cc c c ==三、编码器输出可以由下式来确定: 01m 01m 01m 01m ∞⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦G G G G G G G G G G G G G 输入U =(10111)要求:1)根据图求出G111011111011111011G ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦(1)(2)(1)(2)(1)(2)001122(,,,,,,)c c c c c c c =c =uG2)在给定u的时候计算输出码字C(手工)输出码字为:11 10 00 01 1011101100000011101111101111101111 10 00 01 10 01 113)在给定u的时候计算输出码字C四、 C语言代码如下:#include"stdio.h"#include"iostream.h"void main(){int i;int j;int n;int k;int m;int l;int flag;int num;int b[100];int G[3][6]={{1,1,1,1,1,0},{1,0,1,1,1,1},{1,1,1,0,1,1}};int c[500];cout<<"卷积码(2,1,3)编码方案"<<endl;cout<<"矩阵G:"<<endl;for(i=0;i<=2;i++){for(j=0;j<=5;j++)cout <<G[i][j]<<" ";cout<<endl;}cout <<"input the number of the sequence (<=100):"<<endl;cin >>num;for(i=0;i<num;i++){cin >>b[i];}cout<<"-------------------"<<endl;c[0]=b[0];c[1]=b[0];c[2]=b[0]+b[1];c[3]=b[1];n=3;m=-1;flag=0;i=0;j=0;do{for(k=0;k<=5;k++){m++;for(l=0;l<=1;l++){n++;c[n]=(b[m]*G[i][j]+b[m+1]*G[(i+1)%3][j]+b[m+2]*G[(i+2)%3][j])%2;cout <<"c[n]="<<c[n]<<endl;j=(j+1)%6;if(num<m+2){flag=1;break;}}if(flag==1)break;i=(i+1)%3;}}while(flag==0);for(i=0;i<2*num;i++)cout <<c[i]<<endl;}五、实验分析及心得体会卷积码的应用很广泛。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2kL条路径(序列),而是接收一段,计算和比较一段,选 择一段最大似然可能的码段,从而达到整个码序列是一个 最大似然值得序列。 下面以图6的(2,1,3)卷积码编码器所编出的码为 例,来说明维特比解码的方法和运作过程。为了能说明解 码过程,这里给出该码的状态图,如图7所
mj mj-1 mj-2
输出序列 m1,m2,…mj,… y1j y2j 输入序列
产生网格图 确定l 输入序列数是k的整数倍 寄存器个数是k的整数倍 开始 开始 寄存器个数是k的整数倍 输入序列数是k的整数倍 结束
图3.2 Viterbi译码程序流程图
4.卷积码的仿真 4.1 (2,1)卷积码的仿真
随机输入一组序列,本仿真实验中输入的序列是:1 0 1 1 0 1 0 0,通过卷积编码程序对所输入的序列进行 编码,得到卷积码输出,再对这个卷积码进行噪声干扰, 在实际通信系统中即相当于在空中传输过程中出现传输错 误,出现误码,译码器接收到错误的码字进行解码,理论
单位的输入信息有关,即和前2个子码有关;而且要经过2 个时间单位才能移出存贮器,所以也参与了后2个子码中 的校验运算,称为编码约束度,说明编码过程中互相约束 的码段个数。本例的编码约束度为3。m或是表示卷积码编 码器复杂性的一个重要参数。m或越大,编码器和译码器 越复杂,但卷积码的纠错能力也越强。因此这是一对矛 盾,在具体设计时要根据应用要求进行折衷处理,选择适 当的码型。 卷积码的描述方式为解析法和图解法两类。解析法 包括矩阵形式和生成多项式形式,图解法包括树图、状态 图和网格图。
三级项目报告
课程名称: 码___________ 课程设计题目: _______ 卷积码的仿真与分析 信息论与编
指导教师: ______________ 系 学 别: 号: 专 姓 业: 名: _____
合 作 者
完成时间:
2012 年 6 月 10 日至 6 月 14
日 成绩: 1. 卷积码及其编译码原理概述
图4.2.2 解码器输出的序列
5.卷积码误码率
卷积码是面向流的编码,自由距只影响其中相邻若 干比特的误码。码长是无穷的,而自由距是固定的,因此 不能用纠错能力或检错能力来描述卷积码的性能,比较公 平的一种描述是它的平均误比特率,或在一定(较短)帧长 的误帧率,或者研究在某一位置开始发生一次错误(序列) 的概率。 对卷积码译码误码率的仿真结果如下图5.1所示。图 中,横坐标是信噪比(SNR),是信息功率与噪声功率的比
非分组码的卷积码的编码器是在任一段规定时间内产 生n个码元,但它不仅取决于这段时间中的k个信息位,还 取决于前(K-1)段规定时间内的信息位,这K段时间内的码 元数目为K·k,称参数K为卷积码的约束长度,每k个比特 输入,得到n比特输出,编码效率为k/n,约束长度为K。 在k=1的条件下,移位寄存器级数m=K-1。 卷积码一般可用(n,k,K)来表示,其中k为输入码 元数,n为输出码元数,而K则为编码器的约束长度。典型的 卷积码一般选n和k ( k< n ) 值较小,但约束长度K可取较 大值(K<10),以获得既简单又高性能的信道编码[6]。 卷积码是1955年Elias最早提出,1957年Wozencraft提 出了序列译码。1963年Massey提出了一种性能稍差,但比 较实用的门限译码方法。1967年维特比(Viterbi)提出了 最大似然译码。它对存储器级数较小的卷积码的译码很容 易实现,称为维特比算法或维特比译码。
评阅人:
图1、二进制卷积码的编码器
图2给出了(3,1,2)二进制卷积码编码器。在每 一时间单位,输入一个比特信息,同时存贮器内的数据向 右移一位,产生3个比特的输出,其中一个是输入比特, 两个是校验比特,。
图2
由图可知: 因为校验比特是输入信息元的模2和,它们是线性关 系,所以这类卷积码是线性码。称为卷积码的一个子码或 码段,它不仅与当前输入信息有关,还与前2个(m)时间
a b c d
节点号 0 1 2 3 4 5 6 7 00 00 00 00 00 00 00 11 11 11 11 11
11 11 11 00 00 01 01 01 01 01 01 01 01 01 01 01 11 11 10 10 10 10
设输入编码器的信息序列为(11011000),则由编码 器对应输出的序列为Y=(1101010001011100),编码器的状 态转移路线为abdcbdca。若收到的序列R= (0101011001011100),对照网格图来说明维特比译码的方 法。
a b c d
节点号
0 1 2 3 00 00 00 11 11 11 01 01 01
图9
维特比译码第3时刻幸存路径
由于该卷积码的约束长度为6位,因此先选择接收序 列的前6位序列R1=(010101)同到达第3时刻的可能的8个码 序列(即8条路径)进行比较,并计算出码距。该例中到达 第3时刻a点的路径序列是(000000)和(111011),他们与R1 的距离分别为3和4;到达第3时刻b点的路径序列是 (000011)和(111000),他们与R1的距离分别为3和4;到达 第3时刻c点的路径序列是(001110)和(110101),他们与R1 的距离分别为4和1;到达第3时刻d点的路径序列是 (001101)和(110110),他们与R1的距离分别为2和3。上述 每个节点都保留码距较小的路径作为幸存路径,所以幸存 路径码序列是(000000)、(000011)、(1101001)和 (001101),如图9所示。用于上面类似的方法可以得到第 4、5、6、7时刻的幸存路径。
图4.2.1 编码器输出的卷积码
当通信过程中遇到噪声干扰,出现错码时。例如本 例中将第一位、第五位、第十位和最后一位更改。得到噪 声之后的序列,之后再将噪声之后序列送入译码程序进行 译码输出。经过维特比译码之后输出的输出序列理论上是 原始的输入序列,若与输入序列相同,则验证成功。 设置译码器输入端: 编码器输出的卷积码序列: channel_output=[ 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0000001000 1 1 1 1 0 1 1 1 0 0 0 0 0 0] 加了噪声之后的序列(被送到译码器中进行译码的序列):
图4.1.1 编码器输出的卷积码
当通信过程中遇到噪声干扰,出现错码时。例如本 例中将第一位、第五位、第十位和最后一位更改。得到噪 声之后的序列,之后再将噪声之后序列送入译码程序进行 译码输出。经过维特比译码之后输出的输出序列理论上是 原始的输入序列,若与输入序列相同,则验证成功。 设置解码器输入端: 编码器输出的卷积码序列: channel_output =[ 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0] 加了噪声之后的序列(被送到译码器中进行译码的序列): channel_output =[ 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1] 经过译码器译码之后的输出序列: decoder_output =[ 1 0 1 1 0 1 0 0] 该序列与原始的输入序列coder_input=[1 0 1 1 0 1 0 0]相 同,即还原到了原始的输入序列,达到了纠错的目的。验证成 功。
channel_output=[ 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0000001000 1 1 1 1 0 1 1 1 0 0 0 0 0 1] 经过译码器译码之后的输出序列:decoder_output =[ 1 0 1 1 0 1 0 0] 该序列与原始的输入序列coder_input=[1 0 1 1 0 1 0 0]相同,即还原到了原始的输入序列,达到了纠错的 目的。验证成功。 仿真结果如图4.2.2所示。
3.卷积码编解码设计
开始 是 是 否 结束 否 i=i+1 是 是 error 否 否 输入序列数是k的整数倍 寄存器个数是k的整数倍 确定编码器寄存器个数G_2 确定编码器输出端个数n i=1 ? gg_out与输入矩阵G模2相乘输出 取输入序列前G_2 - i个,得到gg_out函数 i=i-1 gg_out与输入矩阵G模2相乘输出 取输入序列前G_2个,得到gg_out函数 i=i+1 i=寄存器个数G_2 -1 ? gg-out与输入矩阵G模2相乘输出 取输入序列前i个,其后补0得到gg_out函数 i=1 编码器初始化
开始
寄存器个数是k的整数倍 输入序列数是k的整数倍 i=1 gg-out与输入矩阵G模2相乘输出 gg_out与输入矩阵G模2相乘输出 gg_out与输入矩阵G模2相乘输出 结束
图3.1卷积码编码程序流程图 结束 error 是 是 否 否 由后到前得到各级的状态 从最佳路径中产生解码 回溯最佳路径 尾部信道更改幸存路径 尾部信道状态转移路径选择 无尾信道更改幸存路径 无尾信道更改汉明距 无尾信道计算汉明距,加、比、选 产生幸存状态矩阵 按输入输出划分矩阵 确定级数 产生状态转移矩阵、输出矩阵、输入矩阵 产生状态距离矩阵
上按照Viterbi译码算法是可以回溯到原始的正确码字 的,即正确的输入序列。现在对于编码程序在MATLAB系统 中对该实验进行仿真,验证译码是否正确,以得出是否有 差错控制的功能,即卷积码可以实现差错控制。 设置编码器输入端:
随机输入序列:
coder_input=[1 0 1 1 0 1 0 0] 输入(2,1)卷积码的生成矩阵: 设置输入端个数:k=1 则通过仿真得到编码器输出的卷积码序列: channel_output =[ 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0] 仿真结果如图4.1.1所示。