1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJaWmpty
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
LDPC仿真系统图LDPC 码的奇偶校验矩阵H是一个稀疏矩阵,相对于行与列的长度,校验矩阵每行、列中非零元素的数目(我们习惯称作行重、列重)非常小,这也是LDPC码之所以称为低密度码的原因。由于校验矩阵H的稀疏性以及构造时所使用的不同规则,使得不同LDPC码的编码二分图(Taner图)具有不同的闭合环路分布。而二分图中闭合环路是影响LDPC码性能的重要因素,它使得LDPC码在类似可信度传播(Belief ProPagation)算法的一类迭代译码算法下,表现出完全不同的译码性能。
4.部分源码
......................................................................
%%
n = 3;
m = 6;
p = 200;
N = m*p;
M = n*p;
EsN0 = 0.25:0.5:1.25;
R = n/m;
k = R*log2(2);
EbN0 = EsN0/k;
Max_iter = 10;
H1 = func_dys(n,m,p);
% H2 = func_dys(n,m,2*p);
NUMS = [400,300,100,100,80,50,20];
%%
%开始循环,进行误码率仿真
for i=1:length(EsN0)
i
Bit_err(i) = 0; %设置误码率参数
Num_err = 0; %蒙特卡洛模拟次数
Numbers = 0; %误码率累加器
%信道参数
Hsd = 1;
Hsr = 1;
Hrd = 1;
while Num_err <= NUMS(i)
fprintf('Eb/N0 = %f\n', EsN0(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
%S->D
NTrans_BPSK = Hsd*Trans_BPSK+sqrt(N0/2)*randn(size(Trans_BPSK));
%接收端
[vhatsd,nb_itersd,successsd] = func_Dec(NTrans_BPSK,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
figure;
semilogy(EsN0,Bit_err,'o-');
xlabel('Es/N0(dB)');
ylabel('BER');
grid on;
save dat.mat EsN0 Bit_err
14_030_m