Блокируйте энкодер
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
.