|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "Обработка сигналов и изображений\Communications Toolbox" Список функций CommunicationsToolbox: Помехоустойчивое кодирование и декодирование В оглавление \ К следующему разделу \ К предыдущему разделу
Синтаксис: code = encode(msg,n,k,'linear/format',genmat); Необязательные входные параметры:
Описание: Функция encode кодирует сообщения, используя один из следующих помехоустойчивых (корректирующих) блочных кодов:
Общая информация о синтаксисе: Для всех кодов параметр n — длина кодового слова (кодовой комбинации), а параметр k — длина блока сообщения (информационной комбинации). Параметр msg, который представляет исходное сообщение, может иметь различные форматы. В приведенной ниже табл. 1, которая относится ко всем методам кодирования, кроме кодов Рида—Соломона, описаны возможные форматы для параметра msg, соответствующие значения параметра format и форматы кодированного сообщения code. Аналогичная информация для кодов Рида—Соломона сведена в табл. 2. Примеры в таблицах приведены для k = 4 и (для кодов Рида—Соломона) m = 3. Если параметр format при вызове функции не указан, по умолчанию он принимает значение binary. Замечание. Если значение 2n или 2k велико, следует применять формат binary и избегать использования формата decimal. Дело в том, что внутри функции в любом случае используется двоичный формат, а при преобразовании больших чисел между двоичным и десятичным форматами могут возникать значительные ошибки округления. Таблица 1. Форматы представления сообщений для всех кодов, кроме кодов Рида—Соломона
Таблица 2. Форматы представления сообщений для кодов Рида—Соломона
Конкретные варианты синтаксиса:
Кодирует msg с помощью линейного блочного кода, описываемого порождающей матрицей genmat. Параметр genmat должен быть матрицей размером k на n и является обязательным.
Кодирует msg с помощью циклического кода, описываемого порождающим полиномом genpoly. Параметр genpoly является вектором-строкой, содержащим коэффициенты (в порядке возрастания степеней) двоичного порождающего полинома циклического кода. По умолчанию параметр genpoly имеет значение cyclpoly(n,k). Порождающий полином для циклического кода (n, k) по определению имеет степень n – k и является делителем полинома xn – 1.
Кодирует msg с помощью кода БЧХ. Параметр genpoly является вектором-строкой, содержащим коэффициенты (в порядке возрастания степеней) двоичного порождающего полинома кода БЧХ (полином имеет степень n – k). По умолчанию параметр genpoly имеет значение bchpoly(n,k). В данном случае значение n должно быть равно 2m – 1 для некоторого целого m, большего или равного 3. Параметр k должен быть корректной длиной сообщения; его значение можно получить из второго элемента строки params, рассчитываемой командой params = bchpoly(n).
Кодирует msg с помощью кода Хэмминга. В данном случае значение n должно быть равно 2m – 1 для некоторого целого m, большего или равного 3, а значение k должно быть равно n – m. Параметр primpoly — вектор-строка, содержащий двоичные коэффициенты (в порядке возрастания степеней) примитивного полинома над полем GF(2m), используемого для кодирования. По умолчанию primpoly — это примитивный полином, рассчитываемый с помощью вызова функции gfprimdf(m).
То же самое, что code = encode(msg,n,k,'hamming/binary').
Кодирует msg с помощью кода Рида—Соломона. В данном случае значение n должно быть равно 2m – 1 для некоторого целого m, большего или равного 3. Параметр genpoly — вектор-строка, содержащий коэффициенты (в порядке возрастания степеней), порождающего полинома кода. Коэффициенты полинома являются элементами конечного поля GF(2m), представленными в экспоненциальном формате (см. замечание ниже). По умолчанию значение параметра genpoly рассчитывается с помощью функции rspoly. Замечание. Все ненулевые элементы конечного поля GF(pm) могут быть представлены в экспоненциальном виде a c, где a — примитивный элемент поля, а c — целые числа от 0 до pm – 2. В MATLAB для представления элементов конечных полей в экспоненциальном формате используются целые числа c, лежащие в указанном диапазоне, а нулевой элемент представляется значением –Inf. Представление элементов конечного поля в экспоненциальном формате не является однозначным, оно зависит от выбранного примитивного элемента.
То же, что и предыдущий вариант синтаксиса, но параметр field является матрицей, перечисляющей все элементы поля GF(2m) в следующем формате: матрица имеет m столбцов и 2m строк, элементы матрицы равны 0 или 1, строки представляют собой различные комбинации нулей и единиц. Такую матрицу можно сгенерировать, например, командой gftuple([-1:2^m-2]',m). Число столбцов матрицы (m) позволяет определить параметр n, равный 2m – 1. При данном способе вызова функция работает быстрее, чем при предыдущем.
Дополнительно возвращает параметр added, значение которого равно числу нулей, добавленных в конец параметра msg перед кодированием. Это может понадобиться, чтобы привести сообщение к “подходящему” размеру, который зависит от n, k, исходного размера матрицы msg и используемого кода. Примеры. Пример 1. Приведенный ниже пример показывает использование трех различных форматов сообщения (двоичный вектор, двоичная матрица, целочисленный вектор) для кода Хэмминга. Три сообщения имеют одно и то же содержание, представленное в разных форматах; соответственно, то же самое можно сказать и про три созданных функцией encode кодированных сообщения. m = 4; n = 2^m-1; % Длина кодового слова = 15 Пример 2. В следующем примере сообщение кодируется циклическим кодом, затем добавляется шум и производится декодирование зашумленного сообщения с помощью функции decode. Полученная вами вероятность ошибок может отличаться от приведенной, поскольку в примере используются случайные числа. n = 3; k = 2; % Используем циклический код (3,2) Пример 3. В следующем примере одно и то же сообщение кодируется с помощью кода Хэмминга, кода БЧХ и циклического кода. Перед кодированием с помощью кода БЧХ вызывается функция bchpoly, чтобы определить корректные значения размеров блока сообщения кодовой комбинации. В данном примере также создается еще один экземпляр того же кода Хэмминга, причем он задается как линейный код общего вида — с помощью порождающей матрицы и параметра 'linear'. Затем все кодированные сообщения декодируются и результаты сравниваются с исходным сообщением. n = 6; % Начальный размер кодовой комбинации - 6 Алгоритм. В зависимости от используемого кода функция encode вызывает низкоуровневые функции hammgen, cyclgen, bchenco и rsenco. Сопутствующие функции: decode, hammgen, cyclpoly, cyclgen, bchpoly, bchenco, rspoly, rsenco, rsencode, convenc. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|