一般译码和密度演进流程分析:
密度进化是对PDF的传递,其threshold是对迭代后的PDF求积分,求出BER后的判断——是否达到设定的BER需求。所以中间迭代的值都是PDF函数(高斯近似理论中,因为AWGN信道的LLR值呈现N(mu,2mu)的分布,所以也假设中间迭代的PDF统计结果依然符合N(mu,2mu)的分布,迭代过程中的PDF使用均值进行计算就可以简化,而EXIT图是基于迭代后的分布的互信息的计算求得)。
规则码的变量和校验节点更新步骤中参与的节点数目都相等,所以更新中PDF的卷积次数相同;不规则码的变量和校验节点更新步骤中参与的节点数目不相等,所以要根据度分布多项式来求迭代后的平均值。
AWGN信道中,变量节点更新时,是高斯变量(LLR)的求和过程,即PDF函数卷积,卷积后的分布均值为参与卷积的PDF均值之和,方差也为PDF方差之和,所以变量节点的更新过程将更新后的PDF均值幅值变大,方差也变大。
校验节点更新时,通过对box-plus 运算的仿真,发现更新后的PDF均值幅度变小,方差也变小。
所以VNU CNU之间迭代时,不断地在对迭代后的PDF进行方差和均值的修正,努力使BER达到threshold。
(那么,可不可以从这点出发找到使得BER快速趋于0的PDF运算,然后反向操作找到对应的improved译码过程?)
密度进化流程
(1)设定参数:
给定当前码字,密度进化是在无环假设下进行的根据稀疏校验矩阵度分布进行的 所传递PDF的迭代,所以码字由度分布确定,规则码由度分布常量表示,不规则码由度分布多项式表示;设定目标,即当前码字设计在其工作环境下的ber;信道参数,可以是BEC的删除概率,可以是BSC的转移概率,可以是AWGN的噪声方差,通过调整信道参数来求得满足要求的ber下的信道参数阈值;
(2)迭代步骤:
连续密度进化推导
离散密度进化推导
Regular Density Evolution version 0.1.1
Copyright (C) by Andrew W. Eckford
实现方法:
This package contains MATLAB scripts which implement Richardson and Urbanke's density evolution technique to find the ultimate performance of LDPC codes in memoryless channels.
实现内容:
量化规则LDPC和非规则LDPC的密度进化,当量化步长无限小的时候,也就是Bi-AWGN信道输出时的密度进化了吧。
本代码是基于Richardson and Urbanke2001年发表的IT文章进行的实现——The Capacity of Low-Density Parity-Check Codes Under Message-Passing Decoding,下文提到的box-plus离散算法是他们在CL中提出的——On the Design of Low-Density Parity-Check Codes within 0.0045 dB of the Shannon Limit。
使用例子:
例1:二元对称信道,转移概率8.394%,规则LDPC
% 量化信道输入,输入幅度划分为6001等份chan = zeros(1,6001); % chan(3000)为0均值点,所以chan(3240)是正确概率,chan(2762)是错误转移概率chan(3240) = 91.606; % 注意这里是离散的PMF,概率质量函数,所以sum(value*interval)=1chan(2762) = 8.394;% 量化输入的数据格式,此格式为将输入映射到[-30,30]区间,6000等份量化ext = [-30 0.01 6001];% 中间校验节点复杂函数的量化,后续待研究mapping = [-10 0.0002 50000];% 变量节点重量dv = 3;% 校验节点重量dc = 6;% 迭代次数,在此信道下,该码经过100多次迭代可以达到10^-6的错误率,与 The Capacity of Low-Density Parity-Check Codes Under Message-Passing Decoding 中Table I的结论对应iter = 200;% 目标ber (不断改变DE条件,使得输出的threshold逼近目标)stop_pe = 1e-6;% 函数调用result_pe = de_regular(chan,iter,ext,mapping,stop_pe,dv,dc)% 输出result_pe =0.0839 0.0788 0.0756 0.0730 0.0710
例2:二输入对称AWGN输出信道,规则LDPC
chan = zeros(1,6001);ext = [-30 0.01 6001];% LLR input quantization mapping = [-10 0.0002 50000];% 内部迭代计算PDF时的量化(离散计算) quantizaiton for check node valuesdv = 3;dc = 6;iter = 20;stop_pe = 1e-5;% squre root of variance for Guassnoise=1.0; % 高斯信道的量化,用补误差函数erfc()计算量化值chan=chan_mess(ext,noise);result_pe = de_regular(chan,iter,ext,mapping,stop_pe,dv,dc)
例3 : 二输入对称AWGN输出信道,非规则LDPC
ext = [-30 0.01 6001]; mapping = [-10 0.0002 50000];iter = 100;stop_pe = 1e-5; % 度分布多项式vard(1,:)=[0 0.2895 0.3158 0 0 0.3947];chkd(1,:)=[ 0 0 0 0 0 0.9032 0.0968];% squre root of variance for Guass % 噪声从低到高,步长为ns_stp, 逐步试出符合stop_pe的thresholdns_str_low=0.9; ns_str_high=0.94;ns_stp=0.01; % 包括了信道信息的统计 threshold=threshold_tst(vard,chkd,ns_str_low,ns_str_high,ns_stp,ext,mapping,iter,stop_pe);