m基于低复杂度高性能BP译码算法的LDPC编译码性能matlab仿真

简介: m基于低复杂度高性能BP译码算法的LDPC编译码性能matlab仿真

1.算法仿真效果
matlab2022a仿真结果如下:

ba6c6119eac925637fb0338b58f4f151_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
f65f82fc9ee704eaeb5e2ce16f845ff7_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
6d575ee5787135ba833b4676a1d9a157_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
6eea74c7c8ec7641916e626c681c598d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
478c61fba9d7a0b7db736de2d5cbf59a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
1abf67fdeea91b41fd5f3f0fa4bc5ac1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
LDPC码是麻省理工学院Robert Gallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农极限,且描述和实现简单,易于进行理论分析和研究,译码简单且可实行并行操作,适合硬件实现。

    LDPC ( Low-density Parity-check,低密度奇偶校验)码是由 Gallager 在1963 年提出的一类具有稀疏校验矩阵的线性分组码 (linear block codes),然而在接下来的 30 年来由于计算能力的不足,它一直被人们忽视。1996年,D MacKay、M Neal 等人对它重新进行了研究,发现 LDPC 码具有逼近香农极限的优异性能。并且具有译码复杂度低、可并行译码以及译码错误的可检测性等特点,从而成为了信道编码理论新的研究热点。Mckay ,Luby 提出的非正则 LDPC 码将 LDPC 码的概念推广。非正则LDPC码 的性能不仅优于正则 LDPC 码,甚至还优于 Turbo 码的性能,是目前己知的最接近香农限的码。Richardson 和 Urbank 也为 LDPC 码的发展做出了巨大的贡献。首先,他们提出了一种新的编码算法,在很大程度上减轻了随机构造的 LDPC 码在编码上的巨大运算量需求和存储量需求。其次,他们发明了密度演进理论,能够有效的分析出一大类 LDPC 译码算法的译码门限。仿真结果表明,这是一个紧致的译码门限。最后,密度演进理论还可以用于指导非正则 LDPC码 的设计,以获得尽可能优秀的性能。

    在 LDPC 码的 Tanner 图中,从一个顶点出发,经过不同顶点后回到同一个顶点的一些“边”组成的回路称为“环”。经过的边的个数称为环的长度。所有环中周长最小的环称为 LDPC码的围长(girth) ‎。Tanner 图中的环不可避免的会对译码结果造成非常大的干扰。由于迭代概率译码会使信息在节点间交互传递,若存在环,从环的某一个节点出发的信息会沿着环上的节点不断传递并最终重新回到这个节点本身,从而使得节点自身信息不断累加,进而使得译码的最终结果失败的概率变大。显然,环长越小,信息传递回本身所需走的路径就越短,译码失败的概率就变得越高。Tanner 图形成一个环至少需要 4 个节点组成4 条相连的边,即环长最小为4,这类短环对码字的译码结果干扰最大。定义 LDPC码的行列(RC)约束为:两行或两列中不存在元素 1 的位置有 1 个以上相同的情况。显然,满足 RC 约束的 LDPC 码最低就是 6 环,去除了4 环的干扰。由于4环的检测以及避免最为简单并且必要,因此绝大部分构造方法都会满足 RC 约束。而构造大圈长的码字则需要精确的设计。

    LDPC仿真系统图LDPC 码的奇偶校验矩阵H是一个稀疏矩阵,相对于行与列的长度,校验矩阵每行、列中非零元素的数目(我们习惯称作行重、列重)非常小,这也是LDPC码之所以称为低密度码的原因。由于校验矩阵H的稀疏性以及构造时所使用的不同规则,使得不同LDPC码的编码二分图(Taner图)具有不同的闭合环路分布。而二分图中闭合环路是影响LDPC码性能的重要因素,它使得LDPC码在类似可信度传播(Belief ProPagation)算法的一类迭代译码算法下,表现出完全不同的译码性能。
   当H的行重和列重保持不变或尽可能的保持均匀时,我们称这样的LDPC码为正则LDPC码,反之如果列、行重变化差异较大时,称为非正则的LDPC码。研究结果表明正确设计的非正则LDPC码的性能要优于正则LDPC。根据校验矩阵H中的元素是属于GF(2)还是GF(q)(q=2p),我们还可以将LDPC码分为二元域或多元域的LDPC码。研究表明多元域LDPC码的性能要比二元域的好。

   在LDPC编码中,会用到一个叫做H矩阵的校验矩阵(Parity Check Matrix),比如,我们来看一个简单的H矩阵:

6bd643378b47cfc95f2196d5d2470138_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    LLRBP算法较为复杂,因此,我们考虑改进算法的复杂度,加快算法仿真速度。具体方法如下所示:

   这里,在改进算法复杂度方面,主要从tanh方面入手,因为tanh计算在硬件实现方面非常复杂,所以这里通过泰勒展开式,并近似的选择泰勒展开式的前几项作为近似计算公式进行计算,从而降低复杂度。。

ac7c457a872cc936c532cc44994884c7_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   这个地方改进的含义是计算信道传递给变量节点的初始概率似然比信息。

传统的LLRBP算法,其计算是通过这个似然比得到的,

而改进后的算法,通过似然比和变量节点信息的差作为校验节点信息的输入。

    另外一方面,在校验节点计算过程中,根据变量节点传递给校验节点的信息的值,选择不同的校验节点信息的计算公式:具体如下所示:

首先取

8358e6ce2227be0694bd2714d36ac12c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

通过这么处理,可以有效减小变量节点之间信息的相关性,提高译码性能。

3.MATLAB核心程序
```Times = [5000,3000,1000,400,200,50,30];
EbN0_dB = [0.5:1:5.5];
max_iter = 15;

load GH.mat
[N,M] = size(H);
R = 1-N/M;

disp('Start......');
for i=1:length(EbN0_dB)

Bit_err(i) = 0;
Num_err    = 0;
Numbers    = 0; %误码率累加器

EbN0 = 10^(EbN0_dB(i)/10);    % 比特信噪比,十进制表示
sigma = 1/sqrt(2*EbN0);   % 求出方差值
while Num_err <= Times(i);
      Num_err
      fprintf('Eb/N0 = %f\n', EbN0_dB(i));
      Trans_data = round(rand(1,M-N));  %产生需要发送的随机数
      ldpc_code  = mod(Trans_data*G,2); %LDPC编码
      Trans_BPSK = 2*ldpc_code-1;       %BPSK

      %通过高斯信道
      Rec_BPSK = Trans_BPSK + sigma*randn(size(Trans_BPSK));

      z_hat    = func_LLRBP(Rec_BPSK,sigma,H,max_iter) ;

      x_hat    = z_hat(size(G,2)+1-size(G,1):size(G,2));

     [nberr,rat]  = biterr(x_hat,Trans_data);
      Num_err     = Num_err+nberr;
      Numbers     = Numbers+1;    
end 
Bit_err(i)=Num_err/(length(Trans_data)*Numbers);

end

figure;
semilogy(EbN0_dB,Bit_err,'b-o');
xlabel('Eb/N0(dB)');
ylabel('BER');
grid on;

% save R1.mat EbN0 Bit_err
```

相关文章
|
1天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的32QAM解调算法matlab性能仿真
```markdown - 32QAM解调算法运用BP神经网络在matlab2022a中实现,适应复杂通信环境。 - 网络结构含输入、隐藏和输出层,利用梯度下降法优化,以交叉熵损失最小化为目标训练。 - 训练后,解调通过前向传播完成,提高在噪声和干扰中的数据恢复能力。 ``` 请注意,由于字符限制,部分详细信息(如具体图示和详细步骤)未能在摘要中包含。
|
3天前
|
机器学习/深度学习 算法 网络架构
基于yolov2深度学习网络的单人口罩佩戴检测和人脸定位算法matlab仿真
摘要:该内容展示了一个基于YOLOv2的单人口罩佩戴检测和人脸定位算法的应用。使用MATLAB2022A,YOLOv2通过Darknet-19网络和锚框技术检测图像中的口罩佩戴情况。核心代码段展示了如何处理图像,检测人脸并标注口罩区域。程序会实时显示检测结果,等待一段时间以优化显示流畅性。
|
5天前
|
机器学习/深度学习 算法
m基于GA-GRU遗传优化门控循环单元网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,一个基于遗传算法优化的GRU网络展示显著优化效果。优化前后的电力负荷预测图表显示了改进的预测准确性和效率。GRU,作为RNN的一种形式,解决了长期依赖问题,而遗传算法用于优化其超参数,如学习率和隐藏层单元数。核心MATLAB程序执行超过30分钟,通过迭代和适应度评估寻找最佳超参数,最终构建优化的GRU模型进行负荷预测,结果显示预测误差和模型性能的提升。
21 4
|
5天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的16QAM解调算法matlab性能仿真
这是一个关于使用MATLAB2022a实现的16QAM解调算法的摘要。该算法基于BP神经网络,利用其非线性映射和学习能力从复数信号中估计16QAM符号,具有良好的抗噪性能。算法包括训练和测试两个阶段,通过反向传播调整网络参数以减小输出误差。核心程序涉及数据加载、可视化以及神经网络训练,评估指标为误码率(BER)和符号错误率(SER)。代码中还包含了星座图的绘制和训练曲线的展示。
|
7天前
|
机器学习/深度学习 算法
基于BP神经网络的QPSK解调算法matlab性能仿真
该文介绍了使用MATLAB2022a实现的QPSK信号BP神经网络解调算法。QPSK调制信号在复杂信道环境下受到干扰,BP网络能适应性地补偿失真,降低误码率。核心程序涉及数据分割、网络训练及性能评估,最终通过星座图和误码率曲线展示结果。
|
15天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
22小时前
|
算法 数据安全/隐私保护 C++
基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
该内容是关于一个图像水印算法的描述。在MATLAB2022a中运行,算法包括水印的嵌入和提取。首先,RGB图像转换为YUV格式,然后水印通过特定规则嵌入到Y分量中,并经过Arnold置乱增强安全性。水印提取时,经过逆过程恢复,使用了二维CS-SCHT变换和噪声对比度(NC)计算来评估水印的鲁棒性。代码中展示了从RGB到YUV的转换、水印嵌入、JPEG压缩攻击模拟以及水印提取的步骤。
|
8天前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络模型的鱼眼镜头中人员检测算法matlab仿真
该内容是一个关于基于YOLOv2的鱼眼镜头人员检测算法的介绍。展示了算法运行的三张效果图,使用的是matlab2022a软件。YOLOv2模型结合鱼眼镜头畸变校正技术,对鱼眼图像中的人员进行准确检测。算法流程包括图像预处理、网络前向传播、边界框预测与分类及后处理。核心程序段加载预训练的YOLOv2检测器,遍历并处理图像,检测到的目标用矩形标注显示。
|
12天前
|
算法
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
MATLAB 2022a仿真实现了LDPC码的性能分析,展示了不同码长对纠错能力的影响。短码长LDPC码收敛快但纠错能力有限,长码长则提供更强纠错能力但易陷入局部最优。核心代码通过循环进行误码率仿真,根据EsN0计算误比特率,并保存不同码长(12-768)的结果数据。
40 9
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
|
13天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。

热门文章

最新文章