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

m基于钱搜索算法的BCH编译码matlab仿真,仿真输出误码率曲线和编码增益曲线

时间:2023/3/23 16:36:31 点击:

  核心提示:14_047_m,包括程序操作录像+参考文献...

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

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

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

点击店铺

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

2.部分仿真图预览



3.算法概述

①BCH码是一种纠错码、线性分组码、循环码。

②需要传输信息位数:k

③纠错能力:t

④总码长(信息位+监督位):n

⑤n的长度满足n=2^m – 1时生成的为本原BCH码;n的长度为2^m – 1的因子时为非本原BCH码

(如n=15,n=31,n=63时为本原BCH码;n=21(可被63整除)等时为非本原BCH码)

⑥此外还有加长BCH码和缩短BCH码。

⑦具体的BCH码通常用BCH(n,k)码来表示。

4.部分源码

...................................................................

for i=1:2*t

    GFalpha(i)=B2^(2*t-i+1);

end;

 

for j=1:data_Len2

    %Data segmentation

    rec_data = rec_data2((j-1)*n+1:(j-1)*n+n);

    BCH_tmp  = gf(zeros(1, 2*t), m);

    

    for i=1:n

        BCH_tmp = BCH_tmp.*GFalpha+rec_data(n-i+1);%GFalpha Summation and accumulation

    end;

    

    Lmds1     = gf([1, zeros(1, t)], m);

    Lmds2     = Lmds1;

    b1        = gf([0, 1, zeros(1, t)], m);

    b2        = gf([0, 0, 1, zeros(1, t)], m);

    k1        = 0;

    

    Gam       = B1;

    delta     = B0;

    

    BCH_array = gf(zeros(1, t+1), m);

 

    for r=1:t

        r1                = 2*t-2*r+2;

        r2                = min(r1+t, 2*t);

        num               = r2-r1+1;

        BCH_array(1: num) = BCH_tmp(r1:r2);

        

        delta             = BCH_array*Lmds1';

        Lmds2             = Lmds1;

        Lmds1             = Gam*Lmds1-delta*b2(2:t+2);

        

        if (delta~= B0) && (k1>=0)

            b2(3)     = B0;

            b2(4:3+t) = Lmds2(1:t);

            Gam       = delta;

            k1        = -k1;

        else

            b2(3:3+t) = b2(1:t+1);

            Gam       = Gam;

            k1        = k1+2;

        end

    end

    invdat = gf(zeros(1, t+1), m);

    for i=1:t+1

        invdat(i) = B2^(-i+1);

    end;

    %chein search

    Lmds3    = B0;

    acc      = gf(ones(1, t+1), m);

    for i=1:n

        Lmds3 = Lmds1*acc';

        acc   = acc.*invdat;

        

        if Lmds3==B0 

           errs(1,n-i+1) = 1;

        else

           errs(1,n-i+1) = 0;

        end

    end

    

    smll = find(errs(1,:)~=0);

    for i=1:length(smll)

        pos = smll(i);

        if pos <= k;

           rec_data(n-pos+1) = rec_data(n-pos+1) + B1;

        end

    end

    GFdec((j-1)*k+1:(j-1)*k+k) = rec_data(n-k+1:n);%the decode output

end

14_047_m

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