|
D.10.2.7 sysQE
Procedure from library decodegb.lib (see decodegb_lib).
- Usage:
- sysQE(check,y,t,[fieldeq,formal]);check,y matrix;t,fieldeq,formal int
| - check is a parity check matrix of the code
- y is a received word,
- t the number of errors to be corrected,
- if fieldeq=1, then field equations are added,
- if formal=0, field equations on (known) syndrome variables
are not added, in order to add them (note that the exponent should
be equal to the number of elements in the INITIAL alphabet) one
needs to set formal>0 for the exponent
|
- Return:
- the ring to work with together with the resulting system called 'qe'
- Theory:
- Based on 'check' of the given linear code, the procedure constructs
the corresponding ideal that gives an opportunity to compute
unknown syndrome of the received word y. After computing the unknown
syndromes one is able to solve the decoding problem.
For basics of the method Decoding method based on quadratic equations.
Example:
| LIB "decodegb.lib";
intvec v = option(get);
//correct 2 errors in [7,3] 8-ary code RS code
int t=2; int q=8; int n=7; int redun=4;
ring r=(q,a),x,dp;
matrix h_full=genMDSMat(n,a);
matrix h=submat(h_full,1..redun,1..n);
matrix g=dual_code(h);
matrix x[1][3]=0,0,1,0;
matrix y[1][7]=encode(x,g);
//disturb with 2 errors
matrix rec[1][7]=errorInsert(y,list(2,4),list(1,a));
//generate the system
def A=sysQE(h,rec,t);
setring A;
print(qe);
==> U(1)+a^3,
==> U(2)+a^2,
==> U(3)+a^6,
==> U(4),
==> V(1)*U(1)+V(2)*U(2)+U(3),
==> V(1)*U(2)+V(2)*U(3)+U(4),
==> V(1)*U(3)+V(2)*U(4)+U(5),
==> V(1)*U(4)+V(2)*U(5)+U(6),
==> V(1)*U(5)+V(2)*U(6)+U(7),
==> V(1)*U(6)+V(2)*U(7)+U(1),
==> V(2)*U(1)+V(1)*U(7)+U(2)
//let us decode
option(redSB);
ideal sys_qe=std(qe);
print(sys_qe);
==> U(7)+a,
==> U(6)+a^3,
==> U(5)+a^3,
==> U(4),
==> U(3)+a^6,
==> U(2)+a^2,
==> U(1)+a^3,
==> V(2)+1,
==> V(1)+a^4
option(set,v);
| See also:
sysFL.
|