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

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

时间:2024/1/26 22:13:58 点击:

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

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZZqWlZ9r

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

     偏移最小和(Offset Min-Sum, OMS)算法是MS算法的一个变种,它引入了一个偏移量(offset)来改进MS算法的解码性能,尤其是在高信噪比(SNR)条件下。OMS算法通过调整传递给校验节点的消息,减少了由于MS算法近似计算造成的性能损失。

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_oms_puncture(dat_dematch(k,:), Param, Iters,beta);

        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

 

 

figure;

semilogy(SNRs,errors,'b-o');

grid on

xlabel('SNR');

ylabel('error');

 

if Iters==1

   save R1.mat  SNRs errors

end

if Iters==5

   save R5.mat  SNRs errors

end

if Iters==10

   save R10.mat  SNRs errors

end

if Iters==20

   save R20.mat  SNRs errors

end

if Iters==50

   save R50.mat  SNRs errors

end

0X_036m

---

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