1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJWVmZ9t
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
QC-LDPC(Quasi-Cyslic Low-Density Parity-Check Codes)即准循环LDPC码。之前介绍的LDPC码基本属于随机构造法,构造出的码性能很好,但校验矩阵具有不规律性,存在校验矩阵存储于读取困难、编码复杂度高等问题,相对难以实现。准循环LDPC码是结构化LDPC码的重要子集,其奇偶校验矩阵可以分成多个大小相等的方阵,每个方阵都是单位矩阵的循环移位矩阵或全0矩阵,非常便于存储器的存储和寻址,从而大大降低了LDPC码的编译码复杂度,并且具有重复累计结构的准循环LDPC码能够实现线性复杂度的快速编码。因此,目前实际中所使用的LDPC码大都使用这种校验矩阵构造方式。
4.部分源码
.......................................................
R = 0.5;%设置码率为1/2;
N = 402;%设置奇偶校验矩阵大小
M = N*R;
EbN0 = 0:1:3; %设置Eb/N0;*
lends = [1000,500,400,300,200,100]/2;
Max_iter = 50; %最大迭代次数*
%产生奇偶校验矩阵
H = mackay(M,N);
for i=1:length(EbN0)
i
Bit_err(i) = 0; %设置误码率参数
Num_err = 0; %蒙特卡洛模拟次数
Numbers = 0; %误码率累加器
iter_moy_temp = [];%叠加寄存器
while Num_err <= lends(i)
fprintf('Eb/N0 = %f\n', EbN0(i));
Num_err
Trans_data = round(rand(N-M,1)); %产生需要发送的随机数
[ldpc_code,newH] = func_Enc(Trans_data,H); %LDPC编码
u = [ldpc_code;Trans_data]; %LDPC编码
Trans_BPSK = 2*u-1; %BPSK
%通过高斯信道
N0 = 2*10^(-EbN0(i)/10);
Rec_BPSK = Trans_BPSK+sqrt(N0/2)*randn(size(Trans_BPSK));
%LDPC译码
[vhat,nb_iter] = func_Dec(Rec_BPSK,newH,N0,Max_iter);
iter_moy_temp(end+1) = nb_iter;
[nberr,rat] = biterr(vhat',u);
Num_err = Num_err+nberr;
Numbers = Numbers+1;
end
Bit_err(i) = Num_err/(N*Numbers);
end
figure;
semilogy(EbN0,Bit_err,'o-');
xlabel('Eb/N0(dB)');
ylabel('BER');
grid on;
save ldpc_mackey.mat EbN0 Bit_err
14_011_m