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

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

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

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

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

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

«Моделирование кодов Рида–Соломона в системе Octave»

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

Цель работы

Рассмотреть на примере и получить навыки в исследовании недвоичных циклических кодов Рида–Соломона с использованием системы компьютерной алгебры CNU/Octave.

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

8.3.1 Для (n,k)-кода РС (15,9) определить образующий полином

g(15,9) (x) и количество исправляемых кодом ошибок.

>> n = 15;

>> k = 9;

>> [g,t] = rsgenpoly (n,k)

g =

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

Array elements =

1 7 9 3 12 10 12

t = 3

8.3.2. Сформировать по номеру студенческого (зачетной книжки) информационный полином Msg для заданного в предыдущем пункте кода. Считать, что каждая цифра номера — это элемент поля Галуа, над которым строится код. Недостающую длину дополнить нулями.

>> Msg = gf([0 0 1 8 0 5 0 9 0],4,19)

Msg =

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

Array elements =

0 0 1 8 0 5 0 9 0

8.3.3. Закодировать полученный в предыдущем пункте информационный вектор при помощи встроенных функций Octave.

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

Menc =

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

Array elements =

0 0 1 8 0 5 0 9 0 12 4 8 9 4 10

8.3.4. Наложить на полученную в предыдущем пункте кодовую комбинацию Menc кода РС двукратную ошибку и декодировать комбинацию.

>> Err = gf (zeros(1,15),4,19)

Err =

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

Array elements =

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

>> Err(9) = 9;

>> Err(5) = 5;

>> Err

Err =

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

Array elements =

0 0 0 0 5 0 0 0 9 0 0 0 0 0 0

>> Merr = Menc+Err

Merr =

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

Array elements =

0 0 1 8 5 5 0 9 9 12 4 8 9 4 10

>> Mdec = rsdec (Merr,n,k)

Mdec =

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

Array elements =

0 0 1 8 0 5 0 9 0

Вычисление по методу Монте-Карло вероятностных характеристик кода РС.

pkg load communications

close all;

clear all;

n1 =15;

k1 =9;

%

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

s3 = sprintf (" Without coding ") ;

%

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

stat = zeros (4 ,5) ;

N=10000;

%

for i =1:1:5

data=randi([0 15],N,k1);

cod=rsenc(gf(data,4,19),n1,k1);

%

binData = de2bi(data);

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

decMrec1 = reshape(bi2de(mrec1),N,k1);

[ num , rate ]= symerr ( data , decMrec1 );

stat (1 , i ) = rate ;

[ num , rate ]= biterr ( binData , de2bi(decMrec1) );

stat (2 , i ) = rate ;

%

binCod = de2bi(cod.x);

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

decMrec2 = reshape(bi2de(mrec2),N,n1);

mdec2 = rsdec (gf(decMrec2,4,19), n1 , k1);

[ num , rate ]= symerr ( data , mdec2.x );

stat (3 , i ) = rate ;

[ num , rate ]= biterr ( binData , de2bi(mdec2.x) );

stat (4 , i ) = rate ;

end

%

format long ;

%

stat

%

mfig = figure ;

L1 = loglog (p0 , stat (1 ,:) );

set ( L1 ,'LineWidth' ,3 ,'Color','r');

hold on ;

L2 = loglog (p0 , stat (3,:) );

set ( L2 ,'LineWidth' ,1 ,'Color','k');

hold on ;

hold on ;

title ( sprintf ("RS code (%d ,%d) in BSC channel",n1 , k1 ) ) ;

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

ylabel (" Symbol Error rate after decoding ") ;

legend ( s3 , s1 ,0) ;

legend (" show ") ;

grid on ;

%

mfig = figure ;

L3 = loglog (p0 , stat (2 ,:) );

set ( L3 ,'LineWidth' ,3 ,'Color','r');

hold on ;

L4 = loglog (p0 , stat (4,:) );

set ( L4 ,'LineWidth' ,1 ,'Color','k');

hold on ;

hold on ;

title ( sprintf ("RS code (%d ,%d) in BSC channel",n1 , k1 ) ) ;

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

ylabel (" bit Error rate after decoding ") ;

legend ( s3 , s1 ,0) ;

legend (" show ") ;

grid on ;

stat =

Columns 1 through 3:

3.911111111111112e-03 1.993333333333333e-02 3.982222222222222e-02

9.777777777777777e-04 5.013888888888889e-03 1.011388888888889e-02

0.000000000000000e+00 7.777777777777778e-05 6.666666666666666e-04

0.000000000000000e+00 1.944444444444445e-05 1.750000000000000e-04

Columns 4 and 5:

1.845000000000000e-01 3.463000000000000e-01

4.966666666666666e-02 1.004722222222222e-01

9.293333333333334e-02 3.208666666666666e-01

2.634166666666667e-02 9.696666666666667e-02