ПКвИС отчет 6 лабораторная
.docxФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА
Кафедра сетей связи и передачи данных
Отчет по лабораторной работе №6
«Моделирование циклических кодов с использованием системы Octave»
По дисциплине: «Помехоустойчивое кодирование в инфокоммуникационных системах»
Цель работы
Рассмотреть на примере и получить навыки в исследовании циклических кодов с использованием системы компьютерной алгебры GNU/Octave.
Ход выполнения работы
>> p = cyclpoly (16,11)
p =
1 1 0 0 0 1
>> n = 16
n = 16
>> k = 11
k = 11
>> [H,G] = cyclgen (n,p)
H =
1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1
0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1
0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1
0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1
0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0
G =
1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0
1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0
1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1
>> Msg = [0 1 0 1 0 0 1 1 0 1 1]
Msg =
0 1 0 1 0 0 1 1 0 1 1
>> Menc = encode (Msg,n,k,"cyclic")'
Menc =
1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1
>> G2 = gf(G,1,3);
>> Msg2 = gf (Msg,1,3);
>> Menc2 = Msg2*G2
Menc2 =
GF(2) array.
Array elements =
1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1
>> Err1 = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0]
Err1 =
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
>> Merr1 = xor(Menc, Err1)
Merr1 =
1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1
>> Mdec = decode (Merr1,n,k,"cyclic")'
Mdec =
0 1 0 1 0 0 1 1 0 1 1
>> Err2 = [0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0]
Err2 =
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
>> Merr2 = xor(Menc, Err2)
Merr2 =
1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1
>> Mdec2 = decode (Merr2,n,k,"cyclic")'
Mdec2 =
0 1 1 1 0 1 1 1 0 1 1
>> Err3 = [0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0]
Err3 =
0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0
>> Merr3 = xor(Menc, Err3)
Merr3 =
1 0 0 0 1 0 0 0 1 0 1 1 1 0 1 1
>> Mdec3 = decode (Merr3,n,k,"cyclic")'
Mdec3 =
0 0 0 1 0 1 1 1 1 1 1
Сравнение по методу Монте-Карло вероятностных характеристик двух циклических кодов с разной избыточностью.
n1 =16;
n2 =23;
k =11;
%
s1 = sprintf (" Cyclic code (%d ,%d)",n1 , k) ;
s2 = sprintf (" Cyclic code (%d ,%d)",n2 , k) ;
s3 = sprintf (" Without coding ") ;
%
p0 =[1e-3 5e-3 1e-2 5e-2 1e-1];
stat = zeros (3,5) ;
%
msg = randi ([0 1],1e5,k ) ;
%
menc1 = encode ( msg , n1 ,k ,'cyclic') ;
menc2 = encode ( msg , n2 ,k ,'cyclic') ;
%
for i =1:1:5
mrec1 = bsc ( menc1 , p0 ( i ) ) ;
mdec1 = decode ( mrec1 , n1 ,k ,'cyclic') ;
[ num , rate ]= biterr ( msg , mdec1 ) ;
stat (1 , i ) = rate ;
mrec2 = bsc ( menc2 , p0 ( i ) ) ;
mdec2 = decode ( mrec2 , n2 ,k ,'cyclic') ;
[ num , rate ]= biterr ( msg , mdec2 ) ;
stat (2 , i ) = rate ;
mrec3 = bsc ( msg , p0 ( i ) ) ;
[ num , rate ]= biterr ( msg , mrec3 ) ;
stat (3 , i ) = rate ;
end
%
format long ;
%
stat
%
mfig = figure ;
L3 = loglog ( p0 , stat (3 ,:) );
set ( L3 ,'LineWidth' ,3,'Color',"r");
hold on ;
L1 = loglog ( p0 , stat (1 ,:) );
set ( L1 ,'LineWidth' ,1,'Color','k');
hold on ;
L2 = loglog ( p0 , stat (2 ,:) );
set ( L2 ,'LineWidth',3,'Color','b');
hold on ;
title ( sprintf (" Cyclic codes (%d ,% d) and (%d ,% d) in BSCchannel",n1 ,k ,n2 , k ) ) ;
xlabel (" BER in BSC channel , p0") ;
ylabel (" Error rate after decoding ") ;
legend ( s3 , s1 , s2 ,0) ;
legend ('show') ;
grid on ;
print ( mfig ,'-dpng ',sprintf ("cycl -%d -% d_cycl -%d -% d_bsc_err -rate ",n1 ,k , n2 , k ) ) ;
stat =
Columns 1 through 3:
1.000000000000000e-05 5.218181818181819e-04 2.041818181818182e-03
0.000000000000000e+00 0.000000000000000e+00 2.000000000000000e-05
9.936363636363636e-04 5.021818181818182e-03 1.008000000000000e-02
Columns 4 and 5:
3.687636363636364e-02 1.029554545454545e-01
7.184545454545455e-03 5.516454545454545e-02
5.025272727272728e-02 1.001609090909091e-01