• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 2 次
    发布日期: 2021-04-04
  • 语言: Matlab
  • 标签: matlab  

资源简介

一种简易的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);   

评论

共有 条评论