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

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

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

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

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

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

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

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

Цель работы

Рассмотреть на примере и получить навыки в исследовании циклических кодов Боуза–Чоудхури–Хоквингема (БЧХ) с использованием системы компьютерной алгебры GNU/Octave.

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

>> n = 15

n = 15

>> k = 5

k = 5

>> [g,minpol,c] = bchpoly (n,k)

g =

1 1 1 0 1 1 0 0 1 0 1

minpol =

1 1 0 0 1

1 1 1 1 1

1 1 1 0 0

c =

{

[1,1] =

GF(2^4) array. Primitive Polynomial = D^4+D+1 (decimal 19)

Array elements =

1

[1,2] =

GF(2^4) array. Primitive Polynomial = D^4+D+1 (decimal 19)

Array elements =

2 3 4 5

[1,3] =

GF(2^4) array. Primitive Polynomial = D^4+D+1 (decimal 19)

Array elements =

8 10 12 15

[1,4] =

GF(2^4) array. Primitive Polynomial = D^4+D+1 (decimal 19)

Array elements =

6 7

[1,5] =

GF(2^4) array. Primitive Polynomial = D^4+D+1 (decimal 19)

Array elements =

9 11 13 14

}

>> de2bi(127)

ans =

1 1 1 1 1 1 1

>> Msg = [1 1 1 1 1]

Msg =

1 1 1 1 1

>> Menc = bchenco (Msg,n,k)

Menc =

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

>> Menc = encode (Msg,n,k,"bch")'

Menc =

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

>> Err = [0 1 0 0 0 0 0 0 1 0 0 0 0 0 0]

Err =

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

>> Merr = xor (Menc,Err)

Merr =

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

>> Mdec = decode (Merr,n,k,"bch")'

Mdec =

1 1 1 1 1

>> Mdec = bchdeco (Merr,k,3)

Mdec =

1 1 1 1 1

Сравнение по методу Монте-Карло вероятностных характеристик двух кодов БЧХ с разной избыточностью.

n1 =63;

k1 =45;

n2 =15;

k2 =7;

%

s1 = sprintf (" BCH code (%d ,%d)",n1 , k1 ) ;

s2 = sprintf (" BCH code (%d ,%d)",n2 , k2 ) ;

s3 = sprintf (" Without coding ") ;

%

p0 =[1e-3 5e-3 1e-2 5e-2 1e-1];

stat = zeros (3 ,5) ;

%

msg1 = randi ([0 1] ,1e3 , k1 ) ;

msg2 = randi ([0 1] ,1e3 , k2 ) ;

%

menc1 = encode ( msg1 , n1 , k1 ,'bch') ;

menc2 = encode ( msg2 , n2 , k2 ,'bch') ;

%

for i =1:1:5

mrec1 = bsc ( menc1 , p0 ( i ) ) ;

mdec1 = decode ( mrec1 , n1 , k1 ,'bch') ;

[ num , rate ]= biterr ( msg1 , mdec1 ) ;

stat (1 , i ) = rate ;

mrec2 = bsc ( menc2 , p0 ( i ) ) ;

mdec2 = decode ( mrec2 , n2 , k2 ,'bch') ;

[ num , rate ]= biterr ( msg2 , mdec2 ) ;

stat (2 , i ) = rate ;

mrec3 = bsc ( msg1 , p0 ( i ) ) ;

[ num , rate ]= biterr ( msg1 , 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 ("BCH codes (%d ,%d) and (%d ,%d) in BSC channel",

n1 , k1 , n2 , k2 ) ) ;

xlabel (" BER in BSC channel , p0") ;

ylabel (" Error rate after decoding ") ;

legend ( s3 , s1 ,s2 ,0) ;

legend (" show ") ;

grid on ;

print ( mfig ,'-dpng ',sprintf ("bch -%d -% d_cycl -%d -% d_bsc_err - rate",n1 , k1 , n2 , k2 ) ) ;

stat =

Columns 1 through 3:

0.000000000000000e+00 0.000000000000000e+00 2.888888888888889e-04

0.000000000000000e+00 0.000000000000000e+00 2.857142857142857e-04

8.666666666666666e-04 4.888888888888889e-03 1.033333333333333e-02

Columns 4 and 5:

3.335555555555555e-02 1.014444444444444e-01

8.857142857142857e-03 4.714285714285715e-02

4.973333333333333e-02 1.003777777777778e-01

7.3.6.

Подобрать три кода БЧХ, обеспечивающих исправляющую способность не хуже заданной. Выбрать из них код с наименьшей избыточностью.

(Вариант 0)

Большей точностью к заданным значениям и наименьшей избыточностью обладает код (127,106).