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

m基于Berlekamp-Massey钱搜索算法的BCH译码误码率matlab仿真

时间:2023/3/23 17:15:28 点击:

  核心提示:14_047_m,包括程序操作录像...

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

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

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

点击店铺

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

2.部分仿真图预览


3.算法概述

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

②需要传输信息位数:k

③纠错能力:t

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

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

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

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

4.部分源码

%begin decoding

for j=1:nwords

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

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

    for i=1:n,

        syndrome=syndrome.*alpha_tb+rec_data(n-i+1);

    end;

    %imba

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

    lambda0= lambda;

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

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

    k1=0;

    gamma = one;

    delta = zero;

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

 

    if(simplified == 1) 

        for r=1:t,

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

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

            num = r2-r1+1;

            syndrome_array(1: num) = syndrome(r1:r2);

            delta = syndrome_array*lambda';

        

            lambda0 = lambda;

            lambda = gamma*lambda-delta*b2(2:t+2);

        

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

                b2(3)=zero;

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

                gamma = delta;

                k1 = -k1;

            else

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

            gamma = gamma;

            k1=k1+2;

            end

            joke=1;

        end

    else

        for r=1:2*t,

            r1 = 2*t-r+1;

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

            num = r2-r1+1;

            syndrome_array(1:num) = syndrome(r1:r2);

            delta = syndrome_array*lambda';

 

            lambda0 = lambda;

            lambda = gamma*lambda-delta*b(1:t+1);

 

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

                b(2:2+t)=lambda0;

                gamma = delta;

                k1=-k1-1;

            else

                b(2:2+t) = b(1:t+1);

                gamma = gamma;

                k1=k1+1;

            end   

            joke=1;

        end

    end

 

    %inverstable

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

    for i=1:t+1,

        inverse_tb(i) = alpha^(-i+1);

    end;

 

    %chien's search

    lambda_v = zero;

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

    for i=1:n,

        lambda_v=lambda*accu_tb';

        accu_tb = accu_tb.*inverse_tb;

        if(lambda_v==zero)

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

        else

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

        end

    end

    found = find(error(1,:)~=0);

    for i=1:length(found)

        location=found(i);

        if location <= k;

            rec_data(n-location+1)=rec_data(n-location+1)+one;

        end

    end

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

end

 

%decoded_data;

error=0.;

for i=1:length(message)

    if message(i)~=decoded_data(i)

        error=error+1;

    end

end

ber = error/length(message);

14_047_m

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