1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5uUkpxq
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
LDPC译码分为硬判决译码和软判决译码。
硬判决译码又称代数译码,主要代表是比特翻转(BF)译码算法,它的实现比较简单,但是译码性能很差。硬判决译码的基本假设是当校验方程不成立时,说明此时必定有比特位发生了错误,而所有可能发生错误的比特中不满足检验方程个数最多的比特发生错误的概率最大。在每次迭代时翻转发生错误概率最大的比特并用更新之后的码字重新进行译码。
软判决译码是一种基于概率论的译码算法,通常需要与迭代译码进行结合,才能体现成译码性能的优势,基本算法是置信传播(BP)译码算法,它的实现比代数译码方法的复杂度高很多,但译码性能非常好。
4.部分源码
.................................................
sNum=length(SNR);
EbNo=10.^(0.1*SNR);%将信噪比dB转换为普通形式
maxcycle=10; %-------- 设定试验次数--------
maxblockerr=10; %-------- 最大错误帧数--------
decInter=25; %-------- 设置译码迭代次数----------
parameter=1; %----归一化参数,值为1表最小和算法;值为其他值,是对最小和算法的改进,归一化最小和,参数一般为常数0.75---
sigma=1./(sqrt(2*rate*EbNo));
errornum=zeros(1,sNum);
numoferrorFrame=zeros(1,sNum);
numofFrame=zeros(1,sNum);
MS_BER=zeros(1,sNum);
MS_FER=zeros(1,sNum);
tic
for i=1:sNum
cyc=0;
blockerr=0;
while (blockerr<maxblockerr)
cyc=cyc+1;
mBit=rand(1,5402)>0.5;
codeword=mod(mBit*G,2);
waveform=bpsk(codeword,1); % 1~~~~~-1;进行BPSK调制
% 0~~~~~1;
%--------------接收到的加噪后的码字------------
re_waveform=waveform+sigma(i)*randn(1,6075);
%--------------最小和译码--------------------
de_code=MinSumDecoder(re_waveform, H, decInter, parameter);
errors=find(de_code~=codeword);
eacherrornum=length(errors);
if eacherrornum~=0
blockerr= blockerr+1;
end
blockerr
errornum(i)=errornum(i)+eacherrornum;
end
numoferrorFrame(i)=blockerr;
numofFrame(i)=cyc;
MS_BER(i)=errornum(i)/(6075*cyc)
MS_FER(i)=numoferrorFrame(i)/cyc
end
..........................................
A155