Блокируйте энкодер
code = encode(msg,n,k,'linear/fmt',genmat)
code = encode(msg,n,k,'cyclic/fmt',genpoly)
code = encode(msg,n,k,'hamming/fmt',prim_poly)
code = encode(msg,n,k)
[code,added] = encode(...)
Функция encode кодирует сообщения с помощью одного из следующих методов кодирования с коррекцией ошибок:
Линейный блок
Циклический
Хэмминг
Для всех этих методов длиной кодовой комбинации является n, и длиной сообщения является k.
msg, который представляет сообщения, может иметь один из нескольких форматов. Таблица Information Formats показывает, какие форматы позволены для msg, как аргумент fmt должен отразить формат msg, и как формат вывода code зависит от этого выбора. Примеры в таблице для k = 4. Если fmt не задан, как введено, его значением по умолчанию является binary.
Информационные форматы
Размерность msg | Значение fmt Аргумента | Размерность code |
|---|---|---|
| Столбец двоичных данных или вектор - строка | binary
| Столбец двоичных данных или вектор - строка |
Пример: msg = [0 1 1 0, 0 1 0 1, 1 0 0 1].' | ||
Бинарная матрица со столбцами k | binary
| Бинарная матрица со столбцами n |
Пример: msg = [0 1 1 0; 0 1 0 1; 1 0 0 1] | ||
Вектор-столбец или вектор - строка из целых чисел в области значений [0, 2^k-1] | decimal
| Вектор-столбец или вектор - строка из целых чисел в области значений [0, 2^n-1] |
Пример: msg = [6, 10, 9].' | ||
Если 2^n или 2^k являются большими, используйте формат binary по умолчанию вместо формата decimal. Это вызвано тем, что функция использует двоичный формат внутренне, в то время как ошибка округления, сопоставленная с преобразованием многих битов к большим десятичным числам и назад, может быть существенной.
code = encode(msg,n,k,' кодирует linear/fmt',genmat)msg с помощью genmat в качестве порождающей матрицы для линейного метода кодирования блока. genmat, k-by-n матрица, требуется, как введено.
code = encode(msg,n,k,' кодирует cyclic/fmt',genpoly)msg и создает систематический циклический код. genpoly является полиномиальным вектором символов или вектором - строкой, который дает коэффициенты, в порядке возрастающих степеней, бинарного полинома генератора. Значением по умолчанию genpoly является cyclpoly (n,k). По определению, полином генератора для [n, k] циклический код должен иметь степень n-k и должен разделить xn-1.
code = encode(msg,n,k,' кодирует hamming/fmt',prim_poly)msg с помощью метода кодирования Хэмминга. Для этого синтаксиса n должен иметь форму 2m-1 для некоторого целого числа m больше, чем или равный 3, и k должен равняться n-m. prim_poly является полиномиальным вектором символов или вектором - строкой, который дает бинарные коэффициенты, в порядке возрастающих степеней, примитивного полинома для GF (2 м), который используется в процессе кодирования. Значением по умолчанию prim_poly является примитивный полиномиальный gfprimdf по умолчанию (m).
code = encode(msg,n,k) совпадает с code = encode(msg,n,k,'hamming/binary').
[code,added] = encode(...) возвращает дополнительную переменную added. added является количеством нулей, которые были помещены в конце матрицы сообщения прежде, чем закодировать для матрицы, чтобы иметь соответствующую форму. “Соответствующий” зависит от n, k, формы msg и метода кодирования.
В зависимости от метода кодирования encode полагается на такие функции низшего уровня как hammgen и cyclgen.