Программа для исследования помехоустойчивости линейного аддитивного блочного кода заданного вида синдромным методом
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
n с двоичными матричными элементами. При этом каждое кодовое слово является линейной комбинацией строк матрицы G, а каждая линейная комбинация строк G - кодовым словом
Алгоритм кодирования с использованием порождающей или генерирующей матрицы запишется
(3.4)
где x - входной (информационный) символ вектор - строка размерностью k;
G - порождающая матрица размерностью kn;
y - выходной (кодовый) символ вектор - строка размерностью n.
Здесь при умножении входного вектора x на порождающую матрицу G также используется операция суммирования по модулю 2.
3.4.2 Проверочная матрица
При декодировании кодовых символов поступающих на декодер с целью обнаружения ошибок приёма используется проверочная матрица H, позволяющая не только обнаружить ошибку, но и указать ее характер. Формально структура проверочной матрицы H определяется из условия ее ортогональности порождающей матрице G
, (3.5)
где - проверочный блок размерностью (n-k) k;
- единичный блок размерностью (n-k) (n-k).
Ортогональность порождающей и проверочной матриц определяется соотношением
(3.6)
4. Синдромный метод
4.1 Синдром и обнаружение ошибки линейным блочным кодом
Алгоритм декодирования с использованием проверочной матрицы сводиться к уравнению
, (4.1)
где r - принятый, возможно с ошибками, кодовый символ вектор-строка размерностью n;
s - синдром ошибки вектор-строка размерностью n - k.
При отсутствии ошибок приема, когда r = y, синдром ошибки представляет собой нулевой вектор. Наличие ошибки характеризуется не нулевым синдромом. При этом разным ошибкам соответствуют разные по значению синдромы, что позволяет опознавать и исправлять ошибку. Для двоичных кодов достаточно локализовать ошибку и сменить значение соответствующих битов на противоположные.
При передаче кодового слова x по каналу с шумом принятая последовательность будет иметь вид
. (4.2)
Некоторые сочетания ошибок, использую синдром, обнаружить невозможно. Например. Если переданное кодовое слово x под влиянием помех превратилось в другое кодовое слово этого же кода, тогда синдром будет равен нулю, декодер ошибки не обнаружит.
4.2 Синдромное декодирование линейных блочных кодов
Рассмотрим, как можно использовать синдром принятого вектора не только для обнаружения, но и для исправления ошибок.
Пусть
, и
являются передаваемым кодовым словом, вектором ошибок и принятым вектором соответственно.
Тогда
(4.3)
и синдром
,
поскольку для любого кодового слова
(4.4)
Таким образом, синдром принятой последовательности r зависит только от ошибки, имеющий место в этой последовательности, и совершенно не зависит от переданного кодового слова.
Задача декодера, используя эту зависимость, определить элементы (координаты) вектора ошибок. Найдя вектор можно восстановить кодовое слово как
. (4.5)
Если место ошибки определенно, то устранить ее уже не представляет трудностей.
5. Описание программы
5.1 Главная программа Kursovaya2. sci
Функция Kursovaya2. sci является главной программой, содержащей в себе входные и выходные данные, стандартные функции и обращение к вспомогательным подпрограммам. Она отвечает за реализацию заданного алгоритма.
Работа: В программе заранее определены массив входных символов кодера и проверочную матрицу, а так же значение матрицы коэффициентов системы определяющих уравнений кодера, далее путём ее транспонирования получаем генерирующую матрицу кодера. Затем с помощью функции umn_bin_mat идёт кодирование входных символов и на выходе получаем массив кодовых символов. После чего с помощью той же функции umn_bin_mat но уже с использованием проверочной матрицы, получаем на выходе декодера массив вектор-строк синдромов ошибок для случая безошибочной передачи. Далее мы намеренно делаем ошибки в нескольких битах кодовых-символов, после чего находим для них синдромов. После чего формируем матрицу однократных ошибок с начального до конечного бита по главной диагонали и находим для них синдром ошибок.
Листинг главной программы смотри приложение А.
5.2 Функция umn_bin_mat
Заголовок: c=umn_bin_mat (a,b);
Входные параметры:
a, b - сопряжённые по размерностям бинарные матрицы.
Выходные параметры:
с - бинарная матрица, полученная путём умножения матриц a, b по модулю 2+
Назначение: Эта функция отвечает за формирования выходной матрицы путем перемножения входных матриц по модулю 2+.
Листинг подпрограммы функции umn_bin_mat. смотри приложение А.
6. Интерпретация результатов
Пусть даны
,,
Далее с помощью функции по формуле (3.4) получаем массив кодовых-символов
.
После чего находим массив вектор-строк синдромов ошибок по формуле (4.1) для случая без ошибочной передачи
.
Для случая ошибок в первых битах, тогда синдром ошибок примет вид
.