您现在的位置:首页 >> 编解码 >> 内容

m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真

时间:2024/1/26 22:09:23 点击:

  核心提示:0X_037m,包括程序操作录像...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168