基于钱搜索算法的BCH译码
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译码相关推荐
- m基于Berlekamp-Massey钱搜索算法的BCH译码误码率matlab仿真
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 BCH编译码是一种纠 ...
- matlab有向图分割算法,基于万有引力搜索算法图像分割的MATLAB实现
处理效果: 1. 原图 2. 处理结果 3. 相关参数 种群规模:5 种群最大迭代次数:20 万有引力算法计算出的阈值:156.2703 关于万有引力算法的程序代码都来自http://blog.csd ...
- 基于麻雀搜索算法的同步优化特征选择 - 附代码
基于麻雀搜索算法的同步优化特征选择 - 附代码 文章目录 基于麻雀搜索算法的同步优化特征选择 - 附代码 1.数据集 2.SVM模型建立 3.麻雀搜索算法同步优化特征选择 4.测试结果 5.参考文献: ...
- 【优化求解】基于和声搜索算法对IEEE33节点进行无功优化matlab代码
1 简介 在和声搜索算法( HSA) 中,为了寻找全局最优,需要进行初始化和声记忆库,通过和声保留.随机产生.音调调节 3 种方式对变量进行更新,如果新产生的解优于记忆库中最劣的解,则更新记忆库,经过 ...
- 基于禁忌搜索算法的三维装箱问题
装箱问题 装箱问题是复杂的离散组合最优化问题.所谓组合优化,是指在离散的.有限的数学结构上,寻找一个满足给定条件,并使其目标函数值达到最大或最小的解.经典的装箱问题要求把一定数量的物品放入容量相同的一 ...
- 实验项目三:基于A*搜索算法迷宫游戏开发
基于A*搜索算法迷宫游戏开发 由于这一个不太完美,重新写了一个基于python的程序. 一.前言 二.基本流程 三.界面设计 四.迷宫随机生成 五.移动迷宫与尾迹生成 六.A*迷宫自动寻路 七.附加 ...
- 智能优化算法应用:基于麻雀搜索算法的工程优化案例
智能优化算法应用:基于麻雀搜索算法的工程优化案例 文章目录 智能优化算法应用:基于麻雀搜索算法的工程优化案例 1.麻雀搜索算法 2.压力容器设计问题 3.三杆桁架设计问题 4.拉压弹簧设计问题 4.M ...
- 【预测模型-ELM预测】基于原子搜索算法优化极限学习机预测matlab代码
1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于原子搜索算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点 ...
- 基于麻雀搜索算法优化的lssvm回归预测
基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...
最新文章
- html超链接到index,HTML基础___超链接 第四天
- 信息瓶颈提出者Naftali Tishby生前指导,129页博士论文「神经网络中的信息流」公布...
- Payment Spring Boot 1.0.2.RELEASE 发布,接入微信支付分、先享卡功能
- app aws_服务网格:Istio和AWS App Mesh
- java futuretask 实例_java 使用Callable+FutureTask获取执行结果
- hikari如何切换数据源_如何使用Spring为HikariCP设置数据源?
- sqlhelper 下载 使用指南 代码 [收藏]
- 【渗透测试】—如何利用文件包含的方式进行攻击
- 配置nginx作为下载站点
- HTML实现网页内部的跳转
- Mac修改redis密码
- 【矩阵乘法】外部矩阵乘法
- photoshop7.0绿色迷你免安装版
- 小游戏《俄罗斯方块》开发
- CeoMax总裁WordPress模板3.8.1免受权版本
- 【NKOJ-4234】三角分形
- [uboot]MLO和uboot-spl.bin, uboot.img和uboot.bin
- java基于安卓Android微信小程序的音乐论坛uniAPP小程序
- SWUST OJ 954单链表的链接
- virtualbox 虚拟机 win7 激活后开机黑屏,只有横杠