首页 > 编程语言 >m基于低复杂度高性能BP译码算法的LDPC编译码性能matlab仿真

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

时间:2023-05-20 12:22:31浏览次数:50  
标签:复杂度 矩阵 校验 译码 算法 BP matlab LDPC 节点

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

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矩阵:

 

 

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

 

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

 

 

 

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

 

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

 

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

 

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

 

首先取

 

 

 

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

 

 

 

 

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     

 

  

 

标签:复杂度,矩阵,校验,译码,算法,BP,matlab,LDPC,节点
From: https://www.cnblogs.com/51matlab/p/17417036.html

相关文章

  • 基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要       部分传输序列(PartialTransmitSequence,PTS)由于其不受载波数量限制,并且能够有效的,无失真的降低OFDM信号峰均比,而受到广泛关注。部分传输序列算法(PTS)最初是由S.H.Muller和J.B.H......
  • m异构蜂窝网络的K-Tier下行链路的matlab性能仿真,对比网络Voronoi图,覆盖率等
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要       蜂窝网络正在从精心规划的一组大型塔式基站(BSs)对异构基础设施元素的非常规部署,通常还包括微、微微和以及分布式天线。在本文中,我们为下行链路开发易于处理、灵活和精确的......
  • abp框架Excel导出——基于vue
    @@abp到处excel https://blog.51cto.com/u_15162069/2747885https://www.cnblogs.com/JerryMouseLi/p/13399027.html abp框架Excel导出——基于vue 目录abp框架Excel导出——基于vue1.技术栈1.1前端采用vue,官方提供1.2后台是abp——aspnetboilerplate2.E......
  • MATLAB 绘图
     matlab直接保存图形而不显示图形_matlab直接保存图片不显示_faith默默的博客-CSDN博客 Matlab中图片保存的四种方法-技术蛀虫-博客园(cnblogs.com)......
  • ONEAbp
    快速开始首先,如果你没有安装ONEABPCLI,请先安装它:dotnettoolinstall-gONE.Abp.CliCopytoclipboardErrorCopied在一个空文件夹使用 abpnew 命令创建新解决方案:base模板oneabpnewAcme.BookStore-tbase-def-dbmspostgresqlCopytoclipboardErrorCopiedmi......
  • 使用ONE.Abp快速开发微服务,再也不用加班了
    项目背景公司采用项目制工作方式,因此在不同项目上可能存在多个团队开发独立的代码库,但通用的基础设施却是相同的,这可能导致每个项目都需要编写相同的代码,并重复造轮子。更严重的是,每个项目都有自己的用户体系,导致用户在使用不同的服务时需要重新登录,这不仅会破坏用户的体验,也不利......
  • m基于MSER最大稳定极值区域和SVM的交通标志检测识别算法的matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要        在计算机视觉领域,最大稳定极值区域(MSER)(MaximallyStableExtremalRegions)是一种用于在图像中进行斑点检测的方法。这个方法由Matas等人提出,用于在两个不同视角的......
  • m基于MIMO通信系统的半盲信道估计算法matlab仿真,包括QPSK,ML检测,Turbo编译码等
    1.算法仿真效果matlab2022a仿真结果如下:         2.算法涉及理论知识概要        所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道......
  • OpenCloudOS 如何基于 eBPF 实现容器级别的TCP 连接监控?
    eBPF技术的出现,使得内核的资源监控更加的便捷、高效,容器化监控也更加适用于云原生的场景。基于eBPF实现的可观测性,可以无需修改内核源码或者加载内核模块,安全高效的扩展内核功能。本文,将从网络的角度介绍如何基于eBPF,实现容器级别的TCP连接监控。 一、技术背景OpenClou......
  • OpenCloudOS 如何基于 eBPF 实现容器级别的TCP 连接监控?
    eBPF技术的出现,使得内核的资源监控更加的便捷、高效,容器化监控也更加适用于云原生的场景。基于eBPF实现的可观测性,可以无需修改内核源码或者加载内核模块,安全高效的扩展内核功能。本文,将从网络的角度介绍如何基于eBPF,实现容器级别的TCP连接监控。一、技术背景OpenCloudO......