Кодирование сигнала кодом Хэмминга с помощью встроенных функций encode/decode
Стр 1 из 2Следующая ⇒ Лабораторная работа №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 позволяет определить кодовое расстояние для линейного блочного кода по его порождающей или проверочной матрице. Циклические коды
Коды БЧХ Коды БЧХ являются одним из подклассов циклических блочных кодов. Для работы с ними функции высокого уровня вызывают специализированные функции 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 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|