Скачиваний:
3
Добавлен:
17.06.2023
Размер:
1.7 Кб
Скачать
pkg load communications
primpoly(4, "all")
function gfFLD = gf_field(gfSTP,gfPOL)
gfLNG = 2**gfSTP-1;
gfFLD = gf(zeros(1,gfLNG),gfSTP,gfPOL);
gfFLD(1) = 1;
gfFLD(2) = 2;
for CNTR = 3:1:gfLNG
gfFLD(CNTR) = gfFLD(CNTR-1)*gfFLD(2);
endfor
endfunction
gf_arr = gf_field(4,19);
de2bi(gf_arr.x)


function gfELMT = gfElement(index,gfSTP,gfPOL)
fg_all_elements = de2bi(gf_field(gfSTP,gfPOL).x);
m = mod(index,((2**gfSTP)-1));
gfELMT = gf(fg_all_elements((m + 1),[1:gfSTP]),1,3);
endfunction


function INX = gfIndex(element)
INX = 'Nan';
gf_arr = gf_field(4,19);
for index = 1:1:15
if gf_arr(index) == bi2de(element.x)
INX = index - 1;
endif
endfor
endfunction


#x = [1 2 3 4 5 6];
#Syndrom=gfElement(2*x,4,19)+gfElement(3*x,4,19)+gfElement(7*x,4,19)+gfElement(9*x,4,19)+gfElement(10*x,4,19)+gfElement(14*x,4,19)
#gfIndex(Syndrom(1,[1:4]))
#gfIndex(Syndrom(2,[1:4]))
#gfIndex(Syndrom(3,[1:4]))
#gfIndex(Syndrom(4,[1:4]))
#gfIndex(Syndrom(5,[1:4]))
#gfIndex(Syndrom(6,[1:4]))

#gfIndex(gfElement(index,4,19))



n = 15;
k = 9;
[G,T] = rsgenpoly(n,k,19);
x = [13 9 7 14 5 3 2 8 14];
MSG = gf(bi2de(gfElement(x,4,19).x)',4,19);
ERR = gf([0 0 13 0 0 0 0 0 1 0 0 0 0 0 0],4,19);
CODE = rsenc(MSG,n,k,G);
CODE_ERR = CODE + ERR;
DECO = rsdec(CODE_ERR,n,k,G);

bi2de(gfElement(x,4,19).x)';


e = gf(de2bi([15 2 15 3 6 6]),4,19);
gfIndex(e(1,[1:4]))
gfIndex(e(2,[1:4]))
gfIndex(e(3,[1:4]))
gfIndex(e(4,[1:4]))
gfIndex(e(5,[1:4]))
gfIndex(e(6,[1:4]))



x = [1 2 3 4 5 6];
Syndrom=gfElement(2*x,4,19)+gfElement(3*x,4,19)+gfElement(7*x,4,19)+gfElement(9*x,4,19)
+gfElement(10*x,4,19)+gfElement(14*x,4,19)
gfIndex(Syndrom(x,[1:4]))




Соседние файлы в папке лабы