?? rs_decode_forney.m
字號:
function [value,site]=rs_decode_forney(synd_x,sigma_x,root)
%本函數(shù)實現(xiàn)用forney算法計算出錯誤數(shù)值和對應(yīng)的錯誤位置
element=zeros(31,5);%把域中的31個元素用多項式以及十進(jìn)制數(shù)表示
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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -