1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56Zl5lw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
LDPC码是麻省理工学院Robert Gallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农极限,且描述和实现简单,易于进行理论分析和研究,译码简单且可实行并行操作,适合硬件实现。
4.部分源码
..................................................................
Times = 500;%仿真模拟次数,值越大,效果越好,仿真时间越长*
R = 0.5;%设置码率为1/2;
N = 192;%设置奇偶校验矩阵大小
M = N*R;
EbN0 = [0 1 2 3 4 5 6]; %设置Eb/N0;*
Max_iter = 15; %最大迭代次数*
H = func_Hgen(M,N);%产生奇偶校验矩阵
figure;
imshow(H,[]);title('奇偶校验均值H直观图');
for i=1:length(EbN0)
Bit_err(i) = 0; %设置误码率参数
Num_err = 0; %蒙特卡洛模拟次数
Numbers = 0; %误码率累加器
iter_moy_temp = [];%叠加寄存器
while Num_err <= Times
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
14_005_m