m基于大衍数无高阶环稀疏校验矩阵H构造算法和RMP消息传递的QC-LDPC性能matlab仿真

1.算法仿真效果

matlab2017b仿真结果如下:



2.算法涉及理论知识概要

  LDPC 码早于1962 年由Gallager提出,可以看成是一个具有稀疏校验矩阵的线性分组码。自从Mackay 和Neal发现LDPC 码的性能非常接近香农限以后,LDPC 码越来越受到人们的重视。基于准循环LDPC(QC-LDPC)码结构特点,提出了一种支持多种码率QC-LDPC 译码器的设计方法,并设计实现了一个能够实时自适应支持三个不同H 阵的通用QC-LDPC 译码器。


QC-LDPC(Quasi-Cyslic Low-Density Parity-Check Codes)即准循环LDPC码。之前介绍的LDPC码基本属于随机构造法,构造出的码性能很好,但校验矩阵具有不规律性,存在校验矩阵存储于读取困难、编码复杂度高等问题,相对难以实现。准循环LDPC码是结构化LDPC码的重要子集,其奇偶校验矩阵可以分成多个大小相等的方阵,每个方阵都是单位矩阵的循环移位矩阵或全0矩阵,非常便于存储器的存储和寻址,从而大大降低了LDPC码的编译码复杂度,并且具有重复累计结构的准循环LDPC码能够实现线性复杂度的快速编码。因此,目前实际中所使用的LDPC码大都使用这种校验矩阵构造方式。


利用大衍数列的独特性质设计指数矩阵,并将其用来扩展原模图矩阵,得到的校验矩阵中不存在四环。因为原模图基矩阵由计算机搜索算法产生,具有列数可灵活改变的优点,并且该方案构造的校验矩阵中六环的数量相比于基于大衍数列构造法大大地减少了。基于大衍数列构造准循环低密度校验码的方法.该方法利用大衍数列固定项差对应的值单调递增的特点,构造出的校验矩阵不含有长度为4的环,具有准循环结构,节省了校验矩阵的存储空间.


LDPC译码分为硬判决译码和软判决译码


硬判决译码又称代数译码,主要代表是比特翻转(BF)译码算法,它的实现比较简单,但是译码性能很差。硬判决译码的基本假设是当校验方程不成立时,说明此时必定有比特位发生了错误,而所有可能发生错误的比特中不满足检验方程个数最多的比特发生错误的概率最大。在每次迭代时翻转发生错误概率最大的比特并用更新之后的码字重新进行译码。


软判决译码是一种基于概率论的译码算法,通常需要与迭代译码进行结合,才能体现成译码性能的优势,基本算法是置信传播(BP)译码算法,它的实现比代数译码方法的复杂度高很多,但译码性能非常好。


为了解决BP译码算法实现困难问题,在学术界牵起了优化算法的浪潮,对数域置信传播译码(LLR BP)算法、最小和(Min-Sum)译码算法、Normalized Min-Sum译码算法、Offset Min-Sum译码算法等相继涌现。


在迭代译码的过程中,信息调度方式分为两种:泛滥式调度和分层式调度。泛滥式调度的特点在于每一次译码迭代过程中,首先计算从变量节点到校验节点的所有软信息,然后计算从校验节点到变量节点的所有软信息。分层调度的特点是在计算每层软信息时,更新此次迭代中的相关的节点信息,用于下一层的软信息计算。


LDPC译码结构的设计方面主要分为三种:全并行译码结果、行并行译码结构、块并行译码结构。泛滥式的调度比较适合全并行结构,但是译码器的硬件复杂度始终是一个技术瓶颈。分层式的调度适合行并行和块并行结构,可以减少译码所需的迭代次数。


基于RMP消息传递规则的LDPC译码算法


在LDPC译码部分,其消息传递规则主要有SMP和RMP两种准则,两个复杂度类似,但是RMP的收敛速度更快。传统的BP译码算法,主要是基于SMP这种消息传递规则的。下面,我们就SMP和RMP的区别和性能优势进行分析:


对于SMP译码算法,其在译码迭代过程中,校验节点和变量节点同时进行消息传递和处理,其校验节点和变量节点的更新是一个同步的过程。


而对于RMP而言,其在译码迭代过程中,与校验节点相连的变量节点的更新可以使用该次迭代中已经更新过的消息,通过这种方式,可以提高算法的收敛性,所以在实际仿真中,基于RMP的译码算法,其收敛速度将远远大于基于SMP的译码算法。迭代一次RMP的译码效果相当于SMP算法多次迭代才能获得的性能。


基于RMP消息传递规则的BP译码算法,其译码步骤如下所示:




改进后的译码算法,基于RMP消息传递方式的译码算法,其每次迭代过程均包含两次循环,分别为内循环和外循环,其中,通过外循环来计算每个校验节点,通过内循环更新和校验节点向连接的变量节点。

3.MATLAB核心程序

flag        = 1;


%%

n           = 3;

m           = 6;

p           = 150;

N           = m*p;

M           = n*p;


if flag==1

SNR         = [-1,0,1,1.5];

eln         = [500,200,100,25];

end

if flag==0

SNR         = [-1,0,1,2,3];

eln         = [500,300,200,100,100];

end


R           = n/m;

k           = R*log2(2);

EbN0        = SNR/k;

Max_iter    = 15;


H1          = func_dys(n,m,p,flag);

pause(2);

%%

%开始循环,进行误码率仿真

for i=1:length(SNR)

i

Bit_err(i)    = 0; %设置误码率参数

Num_err       = 0; %蒙特卡洛模拟次数

Numbers       = 0; %误码率累加器

%信道参数

Hsd = 1;

Hsr = 1;

Hrd = 1;


while Num_err <= eln(i)

fprintf('Eb/N0 = %f\n', SNR(i));

Num_err

N0  = 2*10^(-EbN0(i)/10);

Trans_data             = round(rand(N-M,1));           %产生需要发送的随机数

[ldpc_code,newH]       = func_Enc(Trans_data,H1);      %LDPC编码

u                      = [ldpc_code;Trans_data];       %LDPC编码

Trans_BPSK             = 2*u-1;                        %BPSK

%S->D

Rec_sd                 = Hsd*Trans_BPSK+sqrt(N0/2)*randn(size(Trans_BPSK));

%接收端

[vhatsd,nb_itersd,successsd] = func_Dec(Rec_sd,newH,N0,Max_iter);

[nberr,rat] = biterr(vhatsd(M+1:N)',Trans_data);

%LDPC译码

Num_err              = Num_err+nberr;

Numbers              = Numbers+1;

end

Bit_err(i) = Num_err/(N*Numbers);

end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容