📄 rsdecodeforney.m
字号:
%
% File Name : RsDecodeForney.m
% Abstract : Calculate evaluator polynomial using forney arithmetic
%
% Version : 1.0 2008-06-05
%*************************************************************************
function [ErrorValueCalc,ErrorPositionCalc]=RsDecodeForney(SyndromCalc,ErrPosPolyCalc,RootCalc)
T=[1,2,4,8,3,6,12,11,5,10,7,14,15,13,9];
w1=zeros(1,length(SyndromCalc)+length(ErrPosPolyCalc)-1); % vector of evaluator polynomial
t=2;ErrorPositionCalc=[]; % 't' is the max number of errors
w1 = RsPolyMul(SyndromCalc,ErrPosPolyCalc); % calculate the ErrorValueCalc of w(j)
% evaluator polynomial
w=w1(1:2*t);
s=zeros(1,length(ErrPosPolyCalc));
% differential coefficient of locator polynomial
for h=1:length(ErrPosPolyCalc)
if mod(h,2)==0
s(h-1)=ErrPosPolyCalc(h);
end
end
s(length(ErrPosPolyCalc))=0;
% error ErrorValueCalc
for k=1:length(RootCalc)
w_final=rs(w,RsSymbolRev(RootCalc(k)));
s_final=rs(s,RsSymbolRev(RootCalc(k)));
ErrorValueCalc(k)=(RsSymbolDiv(w_final,s_final));
ErrorPositionCalc(k)=mod((15-(find(T==RsSymbolRev(RootCalc(k)))-1)),15);
end
% function y=rs(t,x) realizing the y(a) = t(x)|x=a
function y=rs(t,x)
T=[1,2,4,8,3,6,12,11,5,10,7,14,15,13,9];
xx=find(T==x)-1;
n=length(t)-1;
y1=t(1);
for i=1:n
y1=RsSymbolAdd(y1,RsSymbolMul(t(i+1),T(mod(i*xx,15)+1)));
end
y=y1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -