Блочный энкодер
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
- 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
.