Скачиваний:
17
Добавлен:
03.10.2022
Размер:
211.94 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА

Кафедра сетей связи и передачи данных

Отчет по лабораторной работе №5

«Моделирование кода Хэмминга с использованием системы Octave»

По дисциплине: «Помехоустойчивое кодирование в инфокоммуникационных системах»

Цель работы

  • Рассмотреть на примере и получить навыки в исследовании кодов Хэмминга с использованием системы компьютерной алгебры Octave.

Ход выполнения работы

>> [H,G,n,k] = hammgen (4)

H =

1 0 0 0 1 0 0 1 1 0 1 0 1 1 1

0 1 0 0 1 1 0 1 0 1 1 1 1 0 0

0 0 1 0 0 1 1 0 1 0 1 1 1 1 0

0 0 0 1 0 0 1 1 0 1 0 1 1 1 1

G =

1 1 0 0 1 0 0 0 0 0 0 0 0 0 0

0 1 1 0 0 1 0 0 0 0 0 0 0 0 0

0 0 1 1 0 0 1 0 0 0 0 0 0 0 0

1 1 0 1 0 0 0 1 0 0 0 0 0 0 0

1 0 1 0 0 0 0 0 1 0 0 0 0 0 0

0 1 0 1 0 0 0 0 0 1 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0 1 0 0 0 0

0 1 1 1 0 0 0 0 0 0 0 1 0 0 0

1 1 1 1 0 0 0 0 0 0 0 0 1 0 0

1 0 1 1 0 0 0 0 0 0 0 0 0 1 0

1 0 0 1 0 0 0 0 0 0 0 0 0 0 1

n = 15

k = 11

>> 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