基于matlab仿真BCC卷积码编解码

文章详细描述了在MATLAB环境下,使用(2,1,7)卷积码对数据进行编码并加入高斯白噪声,研究不同信噪比下接收端误比特率的变化。结果显示,信噪比越高,误比特率下降速度加快,但存在上下波动,且在一定程度后趋于稳定,这与维特比算法的概率性质有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

引言

实验流程

实验结果及分析


引言

本文的实验是在matlab上按照(2,1,7)卷积码编码后的数据加高斯白噪声,即模拟编码后的数据在信道中传输。然后观察在不同功率的加性高斯白噪声作用下,接收端接收到的不同信噪比的信号数据,再进行维特比算法解码,观察不同信噪比的信号其解码数据的误比特率,并且分析其结果。

实验流程

如图所示,为整个实验的主要代码流程图。首先,随机生成信息序列message,按照(2,1,7)卷积码、生成多项式为(133,171)方式对其进行编码。这其中,编码是利用matlab内置函数convenc来进行编码。然后模拟BPSK调制方式,对信息序列进行调制,即把0映射到1,把1映射到-1。然后对信息序列进行加噪处理。加的噪声为加性白噪声,使用的是awgn函数来加噪声。加噪声时,根据不同的信噪比来加不同功率的噪声,这次实验中,信噪比范围为-10dB到10dB,每次步进0.5dB。然后调用自己编写的维特比算法代码来进行解码。本次实验中,使用的是维特比算法软解码。加噪处理后,得到的数据为浮点型小数,直接对这数据进行解码操作,得到解码结果。最后根据解码结果与信息序列,计算其解码错误的比特数,最后拿错误比特数除总比特数,即得到误比特率。

实验结果及分析

本次实验中,一共随机生成100组数据,每组数据长度为100,对应每组数据,信噪比控制在-10dB到10dB内,每次步进0.5dB,对其进行加噪处理。因为噪声是随机是生成的,为了提高数据的稳定性,在同一数据、相同的信噪比下,进行了10次加噪解码操作。噪声通过影响接收端接收到的最终数据,使其远远偏离正确的数据,最终导致译码错误,如原本为-1的值,通过加性高斯白噪声后,在数值上更加接近1,这就容易导致译码出错。最后得到在不同信噪比情况下的误比特率的值。

如图所示,展示了实验中误比特率随信噪比的变化情况,可以看出在信噪比为3.5dB时,误码率已经下降到10-3以下。信噪比在-4dB到2dB时,随着信噪比的增加,误比特率下降的速率比较快。信噪比在-10dB到-4dB时,其误比特率比较高,并且是有一定的上下波动,不是单调区间。理论上来说,随着信噪比的提高,其误比特率会逐渐下降,但其存在上下波动,可能是由于不同信噪比下,所加噪声具有一定随机性,影响了解码结果。并且最高误码率为0.5左右,误码率不再提高的的原因,可能是与维特比是一种概率解码算法有关,其总是寻找概率最大、最可能的序列作为解码结果。

卷积码是在信息序列通过有限状态移位寄存器的过程中产生的。通常,移存器包含N级(每级A比特),并对应有基于生成多项式的m个线性代数方程,输入数据每次以A位(比特)移入移位寄存器,在此同时有n位(比特)数据作为己编码序列输出,编码效率为A/n。参数N被称作约束长度,它指明了当前的输出数据与多少输入数据有关。它决定了编码的复杂度。 译码器的功能就是,运用一种可以将错误的发生减小到最低程度的规则或方法,从已编码的码字中解出原始信息。在信息序列和码序列之间有一对一的关系。此外,任何信息序列和码序列将与网格图中的唯一一条路径相联系。因而,卷积译码器的工作就是找到网格图中的这一条路径。 Viterbi算法可被描述如下; 把在时刻i,状态 所对应的网格图节点记作 ,每个网相节点被分配一个值 。节点值按如下方式计算: (1)设 , 。 (2)在时刻i,对于进入每个节点的所有路径计算其不完全路径的长度。 (3)令 为在i时刻,到达与状态 。相对应的节点 的最小不完全路径长度。通过在前一节点随机选择一条路径就可产生新的结果。非存留支胳将从网格图中删除。以这种方式,可以从 。处生成一组最小路径。 (4)当L表示输入编码段的数目,其中每段为k比特,m为编码器中的最大穆存器的长度,如果 ,那么令 ,返回第二步。 一旦计算出所有节点值,则从 时刻,状态 。开始,沿网格图中的存留支路反向追寻即可。这样被定义的支路与解码输出将是一一对应的。关于不完全路径长度,硬判决解码将采用Hamming距离,而软判决解码将采用Euclidean距离。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cai-LF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值