Создайте код Рида-Соломона из двоичных векторных данных
Communications Toolbox/Обнаружение и исправление ошибок/Блокировка
Блок Binary-Input RS Encoder создает код Рида-Соломона.
Символы для кода являются двоичными последовательностями M длины, соответствующими элементам поля Галуа GF (2M). Первый бит в каждом символе является самым значимым битом.
Предположим, M = 3, N = 23-1 = 7, и K = 2. Затем сообщение является вектором длины 2, записи которого являются целыми числами от 0 до 7. Соответствующее кодовое слово является вектором длины 7, записи которого являются целыми числами от 0 до 7. Следующий рисунок иллюстрирует возможные входные и выходные сигналы для этого блока, когда длина кодового слова N = 7 и длина слова сообщения K = 2. Начиная с N = 2M-1, когда N = 7, длина символа, M = 3.
Каждый вход сообщения является двоичным вектором длины 6, которое представляет 2 трехбитовых целого числа. Каждое соответствующее выходное кодовое слово является двоичным вектором длины 21, который представляет 7 трехбитовых целых чисел. Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
In
- СообщениеСообщение в битах, заданное как одно из следующего:
Когда нет никакого сокращения сообщения, (N C× <reservedrangesplaceholder1> × <reservedrangesplaceholder0> )-by-1 двойной вектор - столбец.
Когда есть сокращение сообщения, (N C× <reservedrangesplaceholder1> × <reservedrangesplaceholder0> )-by-1 двойной вектор - столбец.
N C - количество слов сообщения, K - Message length K (symbols), M - количество битов на символ и S - Shortened message length S (symbols).
Примечание
Количество декодированных слов сообщения равняется количеству кодовых слов.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Out
- кодовое слово Рида-СоломонаКлючевое слово тростника-Solomon в битах, возвращенных как (N C× (N - K + S - P) × <reservedrangesplaceholder9>)-by-1 двойной вектор - столбец. <reservedrangesplaceholder8> C - количество ключевых слов, N Codeword length N (symbols), K Message length K (symbols), S Shortened message length S (symbols), P - количество проколов за ключевое слово, и M количество бит за символ.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Дополнительные сведения см. в разделе Поддерживаемые типы данных.
Codeword length N (symbols)
- Длина кодового слова7
(по умолчанию) | целое числоДлина кодового слова в символах, заданная как целое число.
Для получения дополнительной информации смотрите Ограничения на M и Длину кодового слова N и Входной и Выходной Длины сигнала в Блоках RS.
Message length K (symbols)
- размер слова сообщения3
(по умолчанию) | целое числоРазмер слова сообщения в символах, заданная в виде целого числа в области значений [1, N -2], где N - длина кодового слова.
Shortened message length S (symbols)
- Сокращённый размер слова сообщения3
(по умолчанию) | целое числоСокращённый размер слова сообщения в символах, заданная как целое число, такое что S ≤ K. При Shortened message length S (symbols) < Message length K (symbols) код Рида-Соломона сокращается.
Вы по-прежнему задаете N и K значения для полноразмерного (N, K) кода, но декодирование сокращается до кода (N - K + S, S).
Чтобы включить этот параметр, выберите Specify shortened message length.
Generator polynomial
- Полином генератораrsgenpoly(7, 3, [], [], 'double')
(дефолт) | многочленный вектор символов | вектор строки двоичных знаков | набор из двух предметов вектор - строка ГалуаПолином генератора со значениями от 0 до 2M-1, в порядке убывания степени, указывается как одно из следующего:
Полиномиальный вектор символов. Для получения дополнительной информации смотрите Представление символов полиномов.
Целочисленный вектор-строка, который представляет коэффициенты полинома генератора в порядке убывания степени.
Целое число вектора-строки Галуа, который представляет коэффициенты полинома генератора в порядке убывания степени.
Каждый коэффициент является элементом поля Галуа, заданным примитивным полиномом. Для получения дополнительной информации смотрите Задать полином генератора.
Пример: [1 3 1 2 3]
, что эквивалентно rsgenpoly(7,3)
Чтобы включить этот параметр, выберите Specify generator polynomial.
Primitive polynomial
- Примитивный полином'X^3 + X + 1'
(по умолчанию) | полиномиальный вектор символов | двоичный вектор-строкаПримитивный полином в порядке убывания степени. Этот полином имеет порядок M и задает конечное поле Галуа GF (2M), соответствующих целым числам, которые образуют слова сообщения и кодовые слова. Задайте примитивный полином как один из следующих:
Полиномиальный вектор символов. Для получения дополнительной информации смотрите Представление символов полиномов.
Двоичный вектор-строка, который представляет коэффициенты полинома генератора.
Для получения дополнительной информации смотрите Ограничения на M и Длину кодового слова N.
Пример: 'X^3 + X + 1'
, который является примитивным полиномом, используемым для (7,3) кода, de2bi(primpoly(3,'nodisplay'),'left-msb')
Чтобы включить этот параметр, выберите Specify primitive polynomial.
Puncture vector
- Вектор прокола[ones(2,1); zeros(2,1)]
(по умолчанию) | двоичный вектор-столбецВектор прокола, заданный как (N - K) -на-1 двоичный вектор-столбец. Индексы элемента с 1
s представляют индексы symbol данных, которые проходят через блок без изменений. Индексы элемента с 0
s представляют индексы symbol данных, которые получают проколы или удаляются из потока данных. Для получения дополнительной информации см. «Прокалывание и стирание».
Чтобы включить этот параметр, выберите Puncture code.
Output data type
- Выход блокаSame as input
(по умолчанию) | boolean
| double
Выход блока, заданный как Same as input
, boolean
, или double
.
Код Рида-Соломона имеет размер слова сообщения, K или укороченный размер слова сообщения, S. Длина кодового слова N - K + S - P, где N - полная длина кодового слова, а P - количество проколов на кодовое слово. Когда нет сокращения сообщения, выражение длины кодового слова уменьшается до N - P, потому что K = S. Если декодер обрабатывает несколько кодовых слов на систему координат, то один и тот же шаблон прокола сохраняется для всех кодовых слов.
В этой таблице представлены выражения для длин входного и выходного сигналов для кодера Рида-Соломона и декодера.
Запись y = N C × x обозначает, что y является целым числом, кратным x.
Вход, стирание и Выход Длин вектора | ||
---|---|---|
Кодер блоков | Сокращение количества сообщений не используется | Используемое сокращение количества сообщений |
Двоичный входной параметр RS Энкодера |
Входная длина (биты): N C × K × M Выходная длина (биты): <reservedrangesplaceholder3> C × (N - P) × <reservedrangesplaceholder0> |
Входная длина (биты): N C × S × M Выходная длина (биты): <reservedrangesplaceholder5> C × (N - K + S - P) × <reservedrangesplaceholder0> |
Двоичный-выходной RS-декодер |
Входная длина (биты): <reservedrangesplaceholder3> C × (N - P) × <reservedrangesplaceholder0> Стирает длину (символы): N C × (N - P) Выходная длина (биты): N C × K × M |
Входная длина (биты): <reservedrangesplaceholder5> C × (N - K + S - P) × <reservedrangesplaceholder0> Стирает длину (символы): N C × (N - K + S - P) Выходная длина (биты): N C × S × M |
N - длина кодового слова.
K - размер слова сообщения.
S - сокращённый размер слова сообщения.
N C - количество кодовых слов (и слов сообщений).
P - количество проколов на кодовое слово, и равно количеству нулей в векторе прокола.
M - это степень примитивного полинома. Каждая группа M бит представляет целое число между 0
и 2M–1
который принадлежит конечному полю Галуа GF (2M)
.
Для получения дополнительной информации о представлении данных для кодов Рида-Соломона, смотрите Целочисленный формат (только для Рида-Соломона).
Кроме того, см. «Ограничения на M и длину кодового слова N».
Если вы не выбираете Specify primitive polynomial, допустимые значения длины кодового слова, N, составляют от 7 до 65535. В этом случае блок использует примитивный полином степени по умолчанию M = ceil(log2(N+1))
. Можно отобразить примитивный полином по умолчанию, запустив primpoly(ceil(log2(N+1)))
.
Если вы выбираете Specify primitive polynomial, допустимые значения для примитивной полиномиальной степени, M, составляют от 3 до 16. Допустимые значения для N в этом случае составляют от 7 до 2M–1. Выбор Specify primitive polynomial позволяет вам задать примитивный полином, который задает конечное поле GF (2M), что соответствует значениям, которые формируют слова сообщения и кодовые слова.
Выберите Specify generator polynomial, чтобы включить параметр Generator polynomial для определения полинома генератора кода Рида-Соломона. Введите целочисленный вектор-строку со значениями элементов от 0 до 2M-1. Вектор представляет полином, в порядке убывания степеней, коэффициенты которого являются элементами GF (2M) представлено в целочисленном формате. Для получения дополнительной информации о целочисленном и двоичном формате смотрите Целочисленный формат (только для Рида-Соломона). Полином генератора должен быть равен полиному с этой факторизованной формой:
g (x) = (x + αb) (x + αb+1) (x + αb+2)... (x + αb+N-K-1)
α - примитивный элемент поля Галуа, над которым задано входное сообщение, а b - целое число.
Если вы не выбираете Specify generator polynomial, блок использует полином генератора по умолчанию, соответствующий b = 1, для кодирования Рида-Соломона. Можно отобразить полином генератора по умолчанию, запустивrsgenpoly
.
Если вы используете примитивный полином по умолчанию (Specify primitive polynomial не выбран), полином генератора по умолчанию является rsgenpoly(N,K)
, где N = 2M-1
.
Если вы не используете примитивный полином по умолчанию (Specify primitive polynomial выбран), и вы задаете примитивный полином как poly
, полином генератора rsgenpoly(N,K,poly)
.
Примечание
Степень полинома генератора N − K, где N - длина кодового слова, а K - размер слова сообщения.
1
s и 0
s имеют точно противоположные значения для векторов пункции и стирания.
В векторе прокола,
1
означает, что символ данных передается через блок без изменений.
0
означает, что символ данных должен быть проколот или удален из потока данных.
В векторе стирания,
1
означает, что символ данных должен быть заменен символом стирания.
0
означает, что символ данных передается через блок без изменений.
Эти соглашения применяются как к энкодеру, так и к декодеру. Для получения дополнительной информации см. «Укорочение, прокалывание и стирание».
Порт | Поддерживаемые типы данных |
---|---|
В |
|
Из |
|
Этот объект реализует алгоритм, входы и выходы, описанные в Алгоритмах для декодирования только ошибок BCH и RS.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.