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

📄 rsdecodeforney.m

📁 RS编码程序设计
💻 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 + -