1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZZqWlZ5y
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在nMS算法中,每个变量节点计算其传递给校验节点的消息时,会基于最小和算法找到最小的入度消息(对应于与该变量节点相连的其他校验节点的消息)和次小的入度消息。然后,变量节点会计算出一个初步的消息值,该值等于最小消息值和次小消息值之差。接着,这个初步的消息值会被归一化,即乘以一个归一化因子(通常小于1),然后再传递给相邻的校验节点。
4.部分源码
% 开始仿真
for ij = 1:length(SNRs)
err_sum = 0;
err_len = 0;
for jk = 1:MTKL
[jk,ij]
%生成随机的信息位
msgs = randi(2,1,Param.B)-1;
%进行代码块分割
cbs_msg = func_cbs(msgs,Param);
%编码
[dat_code,dat_puncture] = func_ldpc_encoder(cbs_msg,Param);
%进行速率匹配
dat_match = func_rate_match(dat_code,Param);
%映射
dat_map = 2*dat_match-1;
%通过信道
Rec_data = awgn(dat_map,SNRs(ij));
%计算对数似然比
Sigma = 1/10^((SNRs(ij))/10);
llr = -2*Rec_data./Sigma;
% 进行速率去匹配
dat_dematch = func_rate_dematch(llr,Param);
dat_decode = zeros(Param.C, Param.K);
for k=1:Param.C
dat_decode(k,:) = func_nms_puncture(dat_dematch(k,:), Param, Iters,alpha);
end
dat_decbs = func_ldpc_decbs(dat_decode, Param);
err = sum(abs(dat_decbs - msgs));
err_sum = err_sum + err;
%统计一个仿真块的结果
err_len = err_len + K;
end
errors(ij) = err_sum/err_len;
end
0X_037m