Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Кодирование сигнала кодом Хэмминга с помощью встроенных функций encode/decode




Лабораторная работа №7

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

 

Выполнил студент группы 2085/20 Копалин О.И. ____________

(подпись)

Проверила Богач Н.В. ____________

(подпись)

«___»______________ 2012г.

 

 

Санкт-Петербург 2012

 


Цель работы:

Изучение методов помехоустойчивого кодирования и сравнение их свойств.

 

Постановка задачи:

Провести кодирование сигнала, полученного с помощью функции randerr кодом Хэмминга 2-мя способами: с помощью встроенных функций encode/decode, а также через создание проверочной и генераторной матриц и вычисление синдрома. Оценить корректирующую способность кода.

С помощью встроенных функций encode/decode выполнить кодирование циклическим кодом. Оценить корректирующую способность кода.

 

Теоретическое обоснование:

Моделирование каналов связи

Сформированный в результате модуляции сигнал поступает в канал связи, где он подвергается воздействию шумов и помех. Поэтому функции моделирования каналов связи должны обеспечивать внесение в сигнал искажений согласно используемым статистическим моделям. Данная группа функций пакета Communications в данный момент представлена лишь одной функцией awgn, которая позволяет добавить к сигналу аддитивный белый нормальный шум, реализовав при этом заданное отношение сигнал/шум. При этом мощность сигнала, знать которую необходимо для расчета требуемого уровня шума, может задаваться в явном виде либо измеряться автоматически.

Функции высокого уровня encode и decode осуществляют, соответственно, кодирование и декодирование сообщения с использованием блочного кода. Тип используемого кода задается в числе параметров функций.

Линейный блочный код в общем случае описывается порождающей матрицей (generator matrix). Кодирование блока (вектора) производится путем его умножения на порождающую матрицу. Помимо порождающей, существует проверочная матрица кода (parity-check matrix). Она может использоваться для обнаружения ошибок — при отсутствии ошибок умножение кодированного блока на проверочную матрицу должно давать нулевой вектор. Преобразование порождающей матрицы в проверочную и обратно осуществляется функцией gen2par.

Если умножение кодированного блока на проверочную матрицу не дает нулевого вектора, то полученный результат (его называют синдромом — syndrome) позволяет определить, какие именно символы были искажены в процессе передачи. Если код является двоичным (то есть символы могут принимать только значения 0 и 1), это позволяет исправить ошибки. Декодирование линейного блочного кода, таким образом, можно осуществить с помощью таблицы, в которой для каждого значения синдрома указан соответствующий вектор ошибок. Создать такую таблицу на основании проверочной матрицы кода позволяет функция syndtable.

Функция gfweight позволяет определить кодовое расстояние для линейного блочного кода по его порождающей или проверочной матрице.

Циклические коды


Циклические коды — это подкласс линейных кодов, обладающие тем свойством, что циклическая перестановка символов в кодированном блоке дает другой возможный кодированный блок того же кода.
Для работы с циклическими кодами в пакете Communications имеются две функции. Задав число символов в кодируемом и закодированном блоках, с помощью функции cyclpoly можно получить порождающий полином циклического кода. Далее, использовав этот полином в качестве одного из параметров функции cyclgen, можно получить порождающую и проверочную матрицы для данного кода.

Коды БЧХ

Коды БЧХ являются одним из подклассов циклических блочных кодов. Для работы с ними функции высокого уровня вызывают специализированные функции bchenco (кодирование) и bchdeco (декодирование). Кроме того, функция bchpoly позволяет рассчитывать параметры или порождающий полином для двоичных кодов БЧХ.

Коды Хэмминга

Коды Хэмминга являются одним из подклассов циклических блочных кодов. Порождающий полином для кодов Хэмминга неприводим и примитивен, а длина кодированного блока равна 2m – 1. Порождающая и проверочная матрицы для кодов Хэмминга генерируются функцией hammgen.

Коды Рида—Соломона

Коды Рида—Соломона являются одним из подклассов циклических блочных кодов. Это единственные поддерживаемые пакетом Communications коды, которые работают не с однобитовыми, а с многобитовыми символами. Для работы с кодами Рида—Соломона функции высокого уровня вызывают специализированные функции rsenco (кодирование) и rsdeco (декодирование). Кроме того, функции rsencode и rsdecode позволяют использовать при кодировании и декодировании экспоненциальный формат данных, а функции rsencof и rsdecof осуществляют кодирование и декодирование текстового файла. Наконец, функция rspoly генерирует порождающие полиномы для кодов Рида—Соломона.

 

Ход работы:

 

Кодирование сигнала кодом Хэмминга с помощью встроенных функций encode/decode

Построение кодов Хемминга основано на принципе проверки на четность числа единичных символов: к последовательности добавляется элемент такой, чтобы число единичных символов в получившейся последовательности было четным.

%Код Хэмминга

msg = randerr(6,11,2) %кодируемый сигнал

m=4; n = 2^m-1; k = 11;

code = encode(msg,n,k,'hamming/ binary ') %двоичное кодирование сигнала

decoding = decode(code,n,k,'hamming/binary') %двоичное декодирование

if decoding==msg

disp('SUCSESS') %проверка исходного и декодированного сигнала

end

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...