ОТПД отчет 6 лабораторная
.docxФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА
Кафедра сетей связи и передачи данных
Цель работы
Рассмотреть на примере и получить навыки в исследовании кодов Хэмминга с использованием системы компьютерной алгебры Octave.
Ход выполнения работы
>> [H,G,n,k] = hammgen (4);
>> Msg = [0 1 0 1 1 0 0 1 0 0 0];
>> Menc = encode (Msg,n,k,"hamming")';
>> G2 = gf(G,1,3);
>> Msg2 = gf(Msg,1,3);
>> Menc2 = Msg2*G2
Menc2 =
GF(2) array.
Array elements =
0 1 1 0 0 1 0 1 1 0 0 1 0 0 0
>> Err1=[0 0 0 0 0 0 0 0 0 0 1 0 0 0 0];
>> Merr1 = xor ( Menc , Err1 )
Merr1 =
0 1 1 0 0 1 0 1 1 0 1 1 0 0 0
>> Mdec1 = decode (Merr1,n,k,"hamming")'
Mdec1 =
0 1 0 1 1 0 0 1 0 0 0
>> H2 = gf (H,1,3);
>>
>> Merr21 = gf (Merr1,1,3);
>> S1= Merr21*H2'
S1 =
GF(2) array.
Array elements =
1 1 1 0
>> Err2 = [0 0 0 1 0 0 0 0 0 0 1 0 0 0 0];
>> Merr2 = xor (Menc , Err2)
Merr2 =
0 1 1 1 0 1 0 1 1 0 1 1 0 0 0
>> Mdec2 = decode (Merr2,n,k,"hamming")'
Mdec2 =
0 1 0 1 1 0 1 1 1 0 0
>> Merr22 = gf(Merr2,1,3);
>> S2= Merr22*H2'
S2 =
GF(2) array.
Array elements =
1 1 1 1
>> Err3 = [0 0 0 1 0 0 1 0 0 0 1 0 0 0 0];
>> Merr3 = xor (Menc, Err3)
Merr3 =
0 1 1 1 0 1 1 1 1 0 1 1 0 0 0
>> Mdec3 = decode (Merr3,n,k,"hamming")'
Mdec3 =
1 1 1 1 1 0 1 1 0 0 0
>> Merr23 = gf(Merr3,1,3);
>> S3= Merr23*H2'
S3 =
GF(2) array.
Array elements =
1 1 0 0
Сравнение по методу Монте-Карло вероятностных характеристик двух кодов Хэмминга
r1 =6;
r2 =8;
%
[H1 ,G1 ,n1 , k1 ]= hammgen ( r1 );
[H2 ,G2 ,n2 , k2 ]= hammgen ( r2 );
s1 = sprintf (" Hamming code (%d ,% d)" ,n1 , k1 );
s2 = sprintf (" Hamming code (%d ,% d)" ,n2 , k2 );
%
p0 =[5e-4 1e-3 5e-3 1e-2 5e-2 1e-1];
stat = zeros (2 ,6) ;
%
msg1 = randi ([0 1] ,1e5 , k1 );
msg2 = randi ([0 1] ,1e5 , k2 );
%
menc1 = encode ( msg1 ,n1 ,k1 ,'hamming');
menc2 = encode ( msg2 ,n2 ,k2 ,"hamming");
%
for i =1:1:6
mrec1 = bsc ( menc1 , p0 (i));
mdec1 = decode ( mrec1 ,n1 ,k1 ,'hamming');
[ num , rate ]= biterr ( msg1 , mdec1 );
stat (1 , i)= rate ;
mrec2 = bsc ( menc2 , p0 (i));
mdec2 = decode ( mrec2 ,n2 ,k2 ,'hamming');
[ num , rate ]= biterr ( msg2 , mdec2 );
stat (2 , i)= rate ;
end
%
format long ;
%
stat
%
mfig = figure ;
L1 = loglog (p0 , stat (1 ,:) );
set (L1 ,'LineWidth' ,3,'Color','k');
hold on ;
L2 = loglog (p0 , stat (2 ,:) );
set (L2 ,'LineWidth' ,3,'Color','b');
hold on ;
title ( sprintf (" Hamming codes (%d ,% d) and (%d ,% d) in BSCchannel ",n1 ,k1 ,n2 , k2 ));
xlabel (" BER in BSC channel , p0 ");
ylabel (" Error rate after decoding ");
legend (s1 ,s2 ,3) ;
legend (" show ");
grid on ;
print ( mfig , ' -dpng ', sprintf ("ham -%d -%d_ham -%d -%d_bsc_err - rate ",n1 ,k1 ,n2 , k2 ));
>> cdr
stat =
1.403508771929825e-05 8.385964912280703e-05 1.989298245614035e-03 6.707894736842105e-03 5.990736842105263e-02 1.123050877192982e-01
8.643724696356276e-05 3.323076923076923e-04 5.000607287449392e-03 1.203716599190283e-02 5.350526315789474e-02 1.031008906882591e-01