www.gusucode.com > 基于matlab编程(31,25)RS编码及解码源码程序 > 基于matlab编程(31,25)RS编码及解码源码程序/code/rs_decode_forney.m
% a function to calculate evaluator polynomial using forney arithmetic % according to syndrome polynomial & locator polynomial & roots of %locator polynomial function [value,site]=rs_decode_forney(synd_x,sigma_x,root) T=[1,2,4,8,16,5,10,20,13,26,17,7,14,28,29,31,27,19,3,6,12,24,21,15,30,25,23,11,22,9,18]; % vector of evaluator polynomial w1=zeros(1,length(synd_x)+length(sigma_x)-1); % 't' is the max number of errors t=3;site=[]; % calculate the value of w(j) for i=1:length(synd_x)-1 for j=1:length(sigma_x) w1(i+j-1)=rs_add(w1(i+j-1),rs_mul(synd_x(i+1),sigma_x(j))); end end % evaluator polynomial w=w1(1:2*t); s=zeros(1,length(sigma_x)); % differential coefficient of locator polynomial for h=1:length(sigma_x) if mod(h,2)==0 s(h-1)=sigma_x(h); end end s(length(sigma_x))=0; for k=1:length(root) w_final=rs_poly(w,root(k)); s_final=rs_poly(s,root(k)); % error value value(k)=rs_mul(w_final,rs_rev(s_final)); site(k)=mod((31-(find(T==root(k))-1)),31); end