clc;
clear;
close all;

m=9;%输入参数6
k=493;%输入参数4
snr=1;
n=2^m-1;

%===================================================
period=1000;
nwords = ceil(1000/k);  
[genpoly,t] = bchgenpoly(n,k);
simplified = 1;

alpha = gf(2, m);    
zero = gf(0, m);
one = gf(1, m);

message=randint(1,nwords*k);
message1=gf(message);
decoded_data=gf(zeros(1,nwords*k));

alpha_tb=gf(zeros(1, 2*t), m);
for i=1:2*t,
   alpha_tb(i)=alpha^(2*t-i+1);
end;

%BCH编码
for j=1:nwords
    encoded_data((j-1)*n+1:(j-1)*n+n)=bchencoder(message((j-1)*k+1:(j-1)*k+k),genpoly,n,k);%由高位到低位
end

%添加噪声
sigma=sqrt(1/(10^(snr/10))/2);
datalength=length(encoded_data);
snum=ceil(datalength/period);
for(i=1:snum-1)
    data2((i-1)*period+1:(i-1)*period+period)=encoded_data((i-1)*period+1:(i-1)*period+period)+sigma*randn(1,period);
end
data2((snum-1)*period+1:datalength)=encoded_data((snum-1)*period+1:datalength)+sigma*randn(1,length(encoded_data((snum-1)*period+1:datalength)));
rec_data2=zeros(1,nwords*n);
for i=1:nwords*n
    if abs(encoded_data(i)-data2(i))>0.5
        rec_data2(i)=xor(encoded_data(i),1);
    else
        rec_data2(i)=encoded_data(i);
    end
end
rec_data2=gf(rec_data2,m);

%BCH译码
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;
    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
    inverse_tb = gf(zeros(1, t+1), m);
    for i=1:t+1,
        inverse_tb(i) = alpha^(-i+1);
    end;

%钱搜索法
    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

D81

基于钱搜索算法的BCH译码相关推荐

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

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 BCH编译码是一种纠 ...

  2. matlab有向图分割算法,基于万有引力搜索算法图像分割的MATLAB实现

    处理效果: 1. 原图 2. 处理结果 3. 相关参数 种群规模:5 种群最大迭代次数:20 万有引力算法计算出的阈值:156.2703 关于万有引力算法的程序代码都来自http://blog.csd ...

  3. 基于麻雀搜索算法的同步优化特征选择 - 附代码

    基于麻雀搜索算法的同步优化特征选择 - 附代码 文章目录 基于麻雀搜索算法的同步优化特征选择 - 附代码 1.数据集 2.SVM模型建立 3.麻雀搜索算法同步优化特征选择 4.测试结果 5.参考文献: ...

  4. 【优化求解】基于和声搜索算法对IEEE33节点进行无功优化matlab代码

    1 简介 在和声搜索算法( HSA) 中,为了寻找全局最优,需要进行初始化和声记忆库,通过和声保留.随机产生.音调调节 3 种方式对变量进行更新,如果新产生的解优于记忆库中最劣的解,则更新记忆库,经过 ...

  5. 基于禁忌搜索算法的三维装箱问题

    装箱问题 装箱问题是复杂的离散组合最优化问题.所谓组合优化,是指在离散的.有限的数学结构上,寻找一个满足给定条件,并使其目标函数值达到最大或最小的解.经典的装箱问题要求把一定数量的物品放入容量相同的一 ...

  6. 实验项目三:基于A*搜索算法迷宫游戏开发

    基于A*搜索算法迷宫游戏开发 由于这一个不太完美,重新写了一个基于python的程序. 一.前言 二.基本流程 三.界面设计 四.迷宫随机生成 五.移动迷宫与尾迹生成 六.A*迷宫自动寻路 七.附加 ...

  7. 智能优化算法应用:基于麻雀搜索算法的工程优化案例

    智能优化算法应用:基于麻雀搜索算法的工程优化案例 文章目录 智能优化算法应用:基于麻雀搜索算法的工程优化案例 1.麻雀搜索算法 2.压力容器设计问题 3.三杆桁架设计问题 4.拉压弹簧设计问题 4.M ...

  8. 【预测模型-ELM预测】基于原子搜索算法优化极限学习机预测matlab代码

    ​1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于原子搜索算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点 ...

  9. 基于麻雀搜索算法优化的lssvm回归预测

    基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...

最新文章

  1. html超链接到index,HTML基础___超链接 第四天
  2. 信息瓶颈提出者Naftali Tishby生前指导,129页博士论文「神经网络中的信息流」公布...
  3. Payment Spring Boot 1.0.2.RELEASE 发布,接入微信支付分、先享卡功能
  4. app aws_服务网格:Istio和AWS App Mesh
  5. java futuretask 实例_java 使用Callable+FutureTask获取执行结果
  6. hikari如何切换数据源_如何使用Spring为HikariCP设置数据源?
  7. sqlhelper 下载 使用指南 代码 [收藏]
  8. 【渗透测试】—如何利用文件包含的方式进行攻击
  9. 配置nginx作为下载站点
  10. HTML实现网页内部的跳转
  11. Mac修改redis密码
  12. 【矩阵乘法】外部矩阵乘法
  13. photoshop7.0绿色迷你免安装版
  14. 小游戏《俄罗斯方块》开发
  15. CeoMax总裁WordPress模板3.8.1免受权版本
  16. 【NKOJ-4234】三角分形
  17. [uboot]MLO和uboot-spl.bin, uboot.img和uboot.bin
  18. java基于安卓Android微信小程序的音乐论坛uniAPP小程序
  19. SWUST OJ 954单链表的链接
  20. virtualbox 虚拟机 win7 激活后开机黑屏,只有横杠

热门文章

  1. linux windos 设计理念,Windows 20 概念设计
  2. SDX55如何使用adb命令读写AT指令
  3. [C语言]——矩阵的转置
  4. YunEngine SDK已经开始发放了!!!
  5. 九招使用 Telegram必学,使用Telegram 必看实用功能
  6. windows cmd 添加路由命令
  7. 联想小新Pro14 2023款和2022款区别
  8. wkhtmltopdf 照片不显示的问题
  9. 计算机左右手控制的按键,采用改进按键布局方法的计算机键盘技术
  10. C/C++智能指针详解