LDPC的密度进化 density evolution
一般译码和密度演进流程分析:
密度进化是对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)迭代步骤:
连续密度进化推导
LDPC迭代 (Sum-Product Algorithm) |
密度化迭代(原始傅里叶变换版本) |
a. 初始化: 初始输入译码器的信道信息为对数似然比: 并将变量节点初始化: 迭代次数k=1。 |
<Channel codes classical and modern,chapter5 and chapter 9> 考虑二进制输入AWGN,,输出为y=x+n,其中。 显然,因为,所以,即var=2mean。 若输入为非AWGN,则 LLR的分布需要另外推导。 这样我们就可以求出LLR信息的PDF。 的PDF记为 |
b. VN更新: |
这一步因为是随机变量求和,且服从初始PDF,为迭代k-1次之后的随机变量,其PDF和初始PDF不同,但是因为是无环假设,所以每个外部节点变量的分布都假设相同,即PDF更新公式可以写为(随机变量的求和之后的PDF为其各自PDF的卷积): , * 为卷积。 规则码的d_v都相同,而非规则码的更新公式为: ,可见非规则码的更新公式就是增加了求平均的步骤。 其快速计算可以采用FFT取代卷积: (规则码) |
c. CN更新: 原始连乘公式: 化简后公式(【实数域上的连乘】变为【符号域连乘+实数域上的连加】): 其中, |
校验节点的推导也有根据原始SP公式的,这里针对化简后的公式, 右边第一个连乘项为符号连乘,不利于推导PDF,所以令 , 则该连乘项改为求和项 到这一步,很自然地就把LLR变为符号(此处符号为真是符号以-1为底的对数,0或1)和幅值两部分: 开始推导变量节点PDF计算 需要知识点:《LDPC码基础与应,贺鹤云编著》p.159 设随机变量X具有概率密度函数f_x(x),又设g(x)处处连续可导且有g'(x)>0(或恒有g'(x)<0),则y=g(x)是连续型随机变量,x=h(y)为y=g(x)的反函数,其概率密度函数为: STEP 1: 求右边第二个求和中的的PDF (1) 当时, , 的PDF为 因为的反函数的对称性,即,或者写为, 我们可以由 得到: 则: 的概率密度函数为: 同样的, (2) 当时, 得到 则: 的概率密度函数为: STEP 2: 计算的PDF 运用变量节点更新的规则,随机变量求和为PDF卷积,但是此时的信息被分为正负两种情况,所以在使用傅里叶变换的时候需要用二维傅里叶变换进行,第一项为二元域变换{0,1},第二项为实数域变换【0,+\infty)。 卷积: 傅里叶变换: 首先 接着 最后 STEP 3: 计算的PDF 类似于STEP 1的推导, 关于上述的傅里叶变换并未深究,只是将书上的知识结合自己理解做了一个整理和总结,离散的密度进化和连续情况有很大不同。 |
d. LLR求和: |
密度进化其实只对应上述的迭代过程,每次迭代完得到之后,通过计算积分并与设置的ber比较 来决定是否继续迭代或者调整信道参数 |
e. 判决:
|
离散密度进化推导
LDPC迭代 (Box-plus Algorithm) 此译码算法是为了解决函数造成难以拟合的问题,即使用查找表也会有性能损失,所以采用盒加操作。 其中最主要的步骤是使用盒加操作取代了, 盒加box-plus见CN节点更新。 |
密度化迭代(量化版本) <Channel codes classical and modern,chapter5 and chapter 9> 代码不是采用的这个办法,可以了解一下。 |
a. 初始化: 初始输入译码器的信道信息为对数似然比: 对量化, 并将变量节点初始化: 迭代次数k=1。 |
求出LLR信息的PDF: 的PDF记为 将PDF进行量化,即对量化区间内的PDF进行积分,求出量化信号的出现概率,即概率质量函数PMF,又称概率谱密度。 |
b. VN更新: |
同非量化版本一致,这一步因为是随机变量求和,对于规则LDPC码来说 , * 为离散卷积。 同样,其快速计算可以采用FFT取代卷积: |
c. CN更新: 原始连乘公式: 盒加化简后公式: 其中, 连乘即对该公式进行递归。box-plus可以做查找表进行计算。 并且可以对CN节点计算顺序进行特殊安排而减少运算次数从而减少复杂度(详细请自行查看文献,累了,扛不动枪了)。 |
这一步与基于原始SP算法,连续的密度进化推导大不同,box-plus运算的概率分布函数可以表示为: 其中为量化步长。 该PMF运算可以写为PMF的盒加运算: 则左边的连续盒加运算可以写作PMF的盒加指数 将VN更新中的卷积带入上式得到: 此时与连续密度进化推导求的式子不同,只需要求就够了,因为在只发送+1的假设下,二者的错误概率积分结果所表征的意思相同。 |
d. LLR求和: |
同样进行ber的计算,但是是离散的 决定是否继续迭代或者调整信道参数 |
e. 判决:
|
Regular Density Evolution version 0.1.1
Copyright (C) 2003 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 Urbanke 2001年发表的IT文章进行的实现——The Capacity of Low-Density Parity-Check Codes Under Message-Passing Decoding,下文提到的box-plus离散算法是他们2004年在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);
LDPC的密度进化 density evolution相关推荐
- 可用于SDR的C语言纠错编码通用算法收集(4)-LDPC低密度奇偶校验码
为了配合学生借助 taskbus进行纯控制台STDIO模块的开发,我们收集了手头的通用纠错算法,便于学生进行开发学习.今天介绍LDPC编码. 1. 低密度奇偶校验编码LDPC 低密度奇偶校验码LDPC ...
- 密度聚类(Density peaks Clustering)Python实现
密度聚类(Density peaks Clustering)Python实现 原文:http://blog.csdn.net/kryolith/article/details/39832573 Rod ...
- 2019/07/21_后生动物转录因子的早期进化 Early evolution of metazoan transcription factors_(lab paper)
title: Early evolution of metazoan transcription factors 1. 发现大多数转录因子(Tf)家族起源于动物王国的黎明,是在当代动物谱系分化之前,在 ...
- 安卓屏幕密度(Density)和分辨率的关系
density值表示每英寸有多少个显示点,与分辨率是两个不同的概念. 下面以480dip*800dip的WVGA(density=240dpi)为例,详细列出不同density下屏幕分辨率信息: de ...
- matlab期权风险评估算法,使用 MATLAB 应用程序根据期权价格估算风险中性密度 (risk-neutral density, RND)...
我们为什么选择 MATLAB 我们决定创建 MATLAB 应用程序估算 RND,因为我们希望研究成果得到广泛应用,而不是仅限于在量化经济学领域或是熟悉 MATLAB 编程的和金融研究人员使用. 我们发 ...
- 通信算法之三:LDPC码的研究
<源自:http://www.chinadata.com.cn/jishujcshow.asp?id=1159 > LDPC码的研究现状与发展动态 1 引言 自从Shannon提出信道 ...
- python绘制所有特征的密度图(density plot)
python绘制所有特征的密度图(density plot) # python绘制所有特征的密度图: n = len(input_feats) #密度图kde,查查分布 cols = 4 rows = ...
- 人群计数经典方法Density Map Estimation,密度图估计
(3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regressi ...
- 基于密度的聚类(Density-based clustering)-- 核密度估计(kernel density estimation)
In density-based clustering, clusters are defined as areas of higher density than the remainder of t ...
最新文章
- 改进AI/ML部署的5种方法
- python 中文件输入输出及os模块对文件系统的操作
- Windows下多线程编程技术及其实现
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- asp.net php 哪个好,ASP.NET、JSP和PHP究竟哪个好
- 机器学习预测信贷风险
- Git 简介和命令行操作
- MapInfo启动时,提示the Microsoft jet engine is not available
- 使用Spring框架对接Twitter(一)
- Matlab DIP(瓦)ch8图像压缩练习
- php ip 短时间 重复,记录服务器端ip,记录这个ip第一次启动文件的时间,并且排除重复的ip...
- 利用ST MCU内部的基准参考电压监测电源电压及其它
- 数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案
- kali最高权限root
- 408数据结构考研笔记!超级详细!23最新考纲
- 谁吃土的时候没有受过委屈?
- BugkuCTF –备份是个好习惯
- WebView 入坑
- 2019中国科学院、中国工程院院士增选名单正式发布
- List中remove()方法的陷阱,开发谨记!