资源简介
一种简易的BCH编译码的matlab实现,输入码长任意,里面有文字说明很详细。
代码片段和文件信息
flag=1;
while(flag) %输入n
n=input(‘输入码长n=‘);
m=0;
while(2^m-1~=n&&m<20) %计算m
m=m+1;
end
if(m==20) %非本原就重新输入
disp(‘错误:只支持本原BCH码‘)
else flag=0;
end
end
flag=1;
while(flag) %输入t
t=input(‘输入纠错能力t=‘);
if((t>=floor((n-1)/2))||(t<=0))
disp(‘错误:纠错能力不能为0或者不能太大‘)
else flag=0;
end
end
%----------------------------------------------
a=gf(2m); %构造扩域matlab自动只把a当做扩域中的本原元
for i=1:2:(2*t-1) %求最小多项式只找奇数项
b=[1a^i]; %让b分别为a^i...找每一个(这么定义是要卷积的)
l=i;
while a^i~=a^(2*l) %找共轭根系
l=2*l;
b=conv(b[1a^l]);%求最小多项式
end
if i==1 g=b;
else
g=conv(gb); %求生成多项式 利用卷积进行连乘
end
end
%--------------------------------------------------
gx=double(g.x);%从扩域到数域 相当于变成多项式
k=n-length(gx)+1;%k=n-(r+1)+1
disp([‘计算得码长 k=‘num2str(k)])
flag=1;
while(flag)
temp=input(‘自动生成随机信息序列输入1手动键入信息序列输入0 :\n‘);
if temp
mx=round(rand(1k));%随机生成信息组
disp([‘随机生成的序列为 m= ‘num2str(mx)])
flag=0;
else inputm=str2mat(input(‘输入信息序列‘‘s‘));
if length(inputm)~=k
disp([‘错误:输入码长应为‘num2str(k)])
else flag=0;
end
mx=str2num(inputm(:))‘;
end
end
%----------------------------------------------------
x1=zeros(1length(gx)); %循环码编码方程中的
x1(1)=1;
c1=conv(x1mx); %码字的前k位编码方程第一项
[qr]=deconv(c1gx);
r=mod(r2); %编码方程第二项
c=mod(c1+r2);
- 上一篇:ECG信号的读取与QRS波检测
- 下一篇:运动目标检测的matlab代码
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论