⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs_decode_forney.m

📁 Reed Solomon码的编译码器MATLAB仿真程序
💻 M
字号:
function [value,site]=rs_decode_forney(synd_x,sigma_x,root)
%本函数实现用forney算法计算出错误数值和对应的错误位置
element=zeros(31,5);%把域中的31个元素用多项式以及十进制数表示
value=0;
site=0;
primary=[0 0 1 0 1];
element(1,:)=[0 0 0 0 1];
element_in_2=zeros(1,31);
element_in_2(1)=1;
for i=2:31
    temp5=zeros(1,6);
    temp5(1:5)=element(i-1,:);
    element(i,:)=temp5(2:6);
    if (temp5(1)==1)
        for j=1:5
            element(i,j)=temp5(j+1)+primary(j);
        end;
    end;
    element(i,:)=mod(element(i,:),2);
    for s=1:5
        element_in_2(i)=element_in_2(i)+element(i,s)*power(2,5-s);
    end;
end;
lenroot=length(root);
for l=1:lenroot
    for t=1:31
        if(element_in_2(t)==root(l))
            site(l)=t;
        end;
    end;
end;
site=site-1;     
    
temp=synd_x;
len=length(synd_x);
errnum=length(root);
if(len==7)
    temp=synd_x(2:7);
end;
temp1=rs_polymul(temp,sigma_x);
oumiga=temp1(1:6);
oumixq=0;
for i=1:errnum
    temp2=rs_symbolrev(root(i));
    oumixq=0;
    sigmaxq=root(i);
    for j=1:5
        temp3=1;
        for m=1:j
            temp3=rs_symbolmultiple(temp3,temp2);
        end;
        temp3=rs_symbolmultiple(temp3,oumiga(j+1));
        oumixq=rs_symboladd(temp3,oumixq);
    end;
    oumixq=rs_symboladd(oumixq,oumiga(1));
    for m=1:errnum
        if(m~=i)
            temp4=rs_symboladd(1,rs_symbolmultiple(root(m),temp2));
            sigmaxq=rs_symbolmultiple(sigmaxq,temp4);
        end;
    end;
    value(i)=rs_symbolmultiple(oumixq,rs_symbolrev(sigmaxq));
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -