【误码率仿真】基于matlab LDPC编译码误码率仿真【含Matlab源码 2079期】
一、LDPC简介
1 LDPC码编码
LDPC码是一种性能非常接近香农极限的“好”码, 它是惟一用校验矩阵来表示的线性分组码。LDPC码的编码主要分两步进行, 首先构造奇偶校验矩阵, 然后是基于奇偶校验矩阵的编码算法。
1.1校验矩阵的构造
根据式子nj = mk可知, 规则的LDPC码 (n, j, k) , 当参数n, j, k确定后, 可以得到校验方程的数目m, 则校验矩阵H的大小就可以定为m × n。构造LDPC码校验矩阵的一般步骤为:先生成一个m行n列的全0矩阵, 然后随机地将每列中的j个0换成1, 每行中的k个0换成1。但在随机置l的过程中, 必须避免出现长度为4的环[4]。 如果最小环长为4, 在迭代中非常容易造成错误信息的扩散传播, 从而导致译码性能的下降[5]。
Mackay为了消除校验矩阵中长度为4的环, 基于Tanner图提出了改进的构造方案。采取的准则是:在构造时必须保证任意两列间的交叠重量不超过1。本文采用的是Mackay的1A构造方法, 按照此方法构造的一个LDPC码 (3, 6) 码如图1所示。
图1 Mackay的1A构造方法
Mackay的1A构造方法是最基本的一种构造方法, 它要求保证固定列重为 γ , 而行重尽可能均匀的保持为 ρ 。 利用Mackay构造方法得到的LDPC码距离特性很好, 且没有短环。
1.2基于奇偶校验矩阵的编码算法
LDPC码的直接编码方法就是利用高斯消去法, 产生一个下三角矩阵, 然后进一步初等变换得到右边单位阵形式H =[P|I] , 由G =[I|P] 得到生成矩阵, 再利用信息码元向量u和生成矩阵G相乘可得到完整码字C, 即C = M*G直接编码。
2 LDPC码译码
BP算法是在Gallager提出的概率译码算法基础上发展而来的。BP算法每次迭代包括2步:变量节点的处理和校验节点的处理。概率域就是在节点间传递的是概率信息, 采用很多乘法运算, 运算量大;而对数域的和积算法实现是将概率值通过对数似然比变化为软信息值 (LLR) , 再进行传递, 这样就将大量乘法运算变为加法运算, 大大简化了译码复杂度, 利于硬件实现。下面重点介绍对数域迭代APP LLR译码算法。
2.1迭代APP LLR译码算法的变量定义
对于 (N, K) LDPC码, 定义变量U取值为0和1时的对数似然比 (LLR) 为:
设发端发送的码字为u =[u1, u2, …, uN] , 接收码字为y =[y1, y2, …, yN] , 由此可以得出在迭代中传递的校验节点和信息节点的软信息为:
2.2迭代APP LLR译码算法
迭代APP LLR译码算法的迭代过程如下:
(1) 初始化:设每个变量节点n的软信息为:
对于矩阵中H (m, n) = 1, 相应的变量节点的软信息初始化为信道输出的软信息, 即 λmn (un) = L (un) , Λmn (un) = 0。
(2) 校验节点更新:根据每个变量节点n, 向与该变量节点相连的所有校验节点传递更新的软信息, 计算校验节点信息:
(3) 变量节点更新:根据每个校验节点m, 向与该校验节点相连的所有变量节点传递更新的软信息:
对变量节点n进行判决时, 变量节点软信息应为:
(4) 判决:当 λn (un) ≥0, 则ûn= 0 , 否则ûn= 1, 此时判决出的码为:û={u1, , û2, …, ûN}。最后根据校验矩阵来判断所译出的码字是否正确。如果ûHT= 0, 那么译码正确, 此时, 停止迭代;否则继续迭代进行译码, 直到迭代次数达到所设定的最大次数。如果此时仍未正确译码, 则译码失败。
由以上所述可见, 在变量节点更新时只有加法运算, 但是还可以再进一步降低算法的实现复杂度。采用迭代APP LLR算法, 将LLR BP算法中的 λn (un) 代替λmn′ (un′) 参与校验信息的迭代。即 λn (un) 不仅用于硬判决, 还用于校验信息的更新。这样所传递的变量消息之间便引进了相关性, 传递的变量消息就不再是外部消息, 仅仅需要计算和存储一个变量消息的数值, 可以大大地降低算法的复杂度。
二、部分源代码
clear all;
clc;
%tic
rows=256;
cols=512;
count=20;
SNR=0:1:6;
for SNRindex=1:length(SNR)
total_err=0;
errmax=0;
nerr=0;
loop=0;
while loop<count
s=round(rand(1, cols-rows));%1*128的0,1矩阵%产生H矩阵H=genH(rows,cols);%使用H矩阵进行LDPC编码[u,P,rearranged_cols]=ldpc_encode(s,H);%SNR=5;%信噪比amp=1;%信号幅值tx_waveform=bpsk(u,amp);rx_waveform=awgn(tx_waveform,SNR(SNRindex));scale(1:length(u))=1; %No fading.%LDPC译码[uhat vhat]=ldpc_decode(rx_waveform,SNR(SNRindex),amp,scale,H,rearranged_cols);errmax=find(s~=uhat);nerr=length(errmax);total_err=total_err+nerr;loop=loop+1;%loop
end
errratio=total_err/(length(s)*count);
lerror(SNRindex)=errratio;
SNRindex
end
%errratio
%end
%figure(1);
semilogy(SNR,lerror,‘-bo’);
xlabel(‘信噪比/dB’)
ylabel(‘误码率’)
grid on
title(‘average BER’)
axis([0 6 10^-5 10^0])
legend(‘LDPC编码’)
%toc
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 李秀花,高永安,马雯.LDPC码译码算法及性能分析[J].现代电子技术. 2014,37(01)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
【误码率仿真】基于matlab LDPC编译码误码率仿真【含Matlab源码 2079期】相关推荐
- 【编码译码】基于matlab LDPC编码和解码【含Matlab源码 2560期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [编码译码]基于matlab LDPC编码和解码[含Matlab源码 2560期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...
- 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...
- 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】
一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】
一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...
最新文章
- 微秒时间_Ublox 1PPS时间脉冲精度配置问题
- TPYBoard开发板搭建与阿里云服务发送数据
- 双十一:透支消费?累积消费?促进消费?
- Servlet3.0下配置Servlet
- .netcore 开发的 iNeuOS 物联网平台部署在 Ubuntu 操作系统,无缝跨平台
- php怎么关闭oracle连接,PHP 连接 Oracle
- uuid重复_0519-如何解决Cloudera Manager主机页面出现重复主机异常
- Leetcode每日一题:127.word-ladder(单词接龙)
- 倒行逆施的贾金斯先生(转)
- 机器学习——KNN及代码实现
- python的文件夹里面有什么_Python的文件及文件夹操作
- oracle临时表空间释放
- java 登录界面加验证码_java 做登陆窗口,带有用户名和密码输入框和验证码。求修改...
- vba xla文件宏文件解密
- 2022云和恩墨大讲堂·苏州站成功举办,论道数智化时代下国产数据库的技术创新与实践
- 【翻译论文】Understanding Reuse, Performance, and Hardware Cost of DNN......
- 转:极速的关键——斯巴鲁车系四驱系统详解
- 多个倒计时并行(拼团倒计时)
- eclipse第十七课时
- 学ui设计可以从事什么工作