Создайте код Рида-Соломона из целочисленных векторных данных
Communications Toolbox/Обнаружение и исправление ошибок/Блокировка
Блок Integer-Input RS Encoder создает код Рида-Соломона.
Символы для кода являются целыми числами от 0 до 2M-1, которые представляют элементы конечного поля GF (2M). Значение по умолчанию M является наименьшим целым числом, которое больше или равно log2 (N + 1), то есть ceil(log2(N+1))
. Можно изменить значение по умолчанию M, задав примитивный полином для GF (2M), как описано в «Задайте примитивный полином» ниже. Ограничения на M и N описаны в Ограничениях на M и Длине кодового слова N.
Входные и выходные сигналы являются целочисленными сигналами, которые представляют сообщения и кодовые слова, соответственно. Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Код (N, K) Рида-Соломона может исправлять до floor((N-K)/2)
символьные ошибки (не битовые ошибки) в каждом кодовом слове.
Предположим, M = 3, N = 23-1 = 7, и K = 5. Затем сообщение является вектором длины 5, записи которого являются целыми числами от 0 до 7. Соответствующее кодовое слово является вектором длины 7, записи которого являются целыми числами от 0 до 7. Следующий рисунок иллюстрирует возможные входные и выходные сигналы этому блоку, когда Codeword length N установлено на 7
Message length K установлено на 5
, и используются примитив по умолчанию и полиномы генератора.
In
- СообщениеСообщение, заданное как одно из следующих:
Когда нет сокращения сообщения, a (N C × K) -на-1 целое число вектора-столбца.
Когда происходит сокращение сообщения, a (N C × S) -на-1 целое число вектора-столбца.
N C - количество слов сообщения, K - Message length K, и S - Shortened message length S.
Примечание
Количество декодированных слов сообщения равняется количеству кодовых слов.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
Out
- кодовое слово Рида-СоломонаКлючевое слово тростника-Solomon, возвращенное как (N C× (N - K + S - P)-by-1 целочисленный вектор - столбец. <reservedrangesplaceholder7> C - количество ключевых слов, N Codeword length N, K Message length K, S Shortened message length S, P - количество проколов за ключевое слово.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
Дополнительные сведения см. в разделе Поддерживаемые типы данных.
Codeword length N
- Длина кодового слова7
(по умолчанию) | целое числоДлина кодового слова, заданная в виде целого числа.
Для получения дополнительной информации смотрите Ограничения на M и Длину кодового слова N и Входной и Выходной Длины сигнала в Блоках RS.
Message length K
- размер слова сообщения3
(по умолчанию) | целое числоРазмер слова виде целого числа в области значений [1, N -2], где N - длина кодового слова.
Shortened message length S
- Сокращённый размер слова сообщения3
(по умолчанию) | целое числоСокращённый размер слова сообщения, заданная как целое число, такое, что S ≤ K. При Shortened message length S < Message length K код Рида-Соломона сокращается.
Вы по-прежнему задаете 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), соответствующих целым числам, которые образуют слова сообщения и кодовые слова. Задайте примитивный полином как один из следующих:
Полиномиальный вектор символов. Для получения дополнительной информации смотрите Представление символов полиномов.
Двоичный вектор-строка, который представляет коэффициенты полинома генератора.
Для получения дополнительной информации смотрите Задать примитивный полином.
Пример: '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.
Типы данных |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Код Рида-Соломона имеет размер слова сообщения, K или укороченный размер слова сообщения, S. Длина кодового слова N - K + S - P, где N - полная длина кодового слова, а P - количество проколов на кодовое слово. Когда нет сокращения сообщения, выражение длины кодового слова уменьшается до N - P, потому что K = S. Если декодер обрабатывает несколько кодовых слов на систему координат, то один и тот же шаблон прокола сохраняется для всех кодовых слов.
В этой таблице представлены выражения для длин входного и выходного сигналов для кодера Рида-Соломона и декодера.
Запись y = N C × x обозначает, что y является целым числом, кратным x.
Вход, стирание и Выход Длин вектора | ||
---|---|---|
Кодер блоков | Сокращение количества сообщений не используется | Используемое сокращение количества сообщений |
Целое число - входной параметр RS Энкодера |
Входная длина (символы): N C × K Выходная длина (символы): N C × (N - P) |
Входная длина (символы): N C × S Выходная длина (символы): N C × (N - K + S - P) |
Целочисленный-выходной RS-декодер |
Входная длина (символы): N C × (N - P) Стирает длину (символы): N C × (N - P) Выходная длина (символы): N C × K |
Входная длина (символы): N C × (N - K + S - P) Стирает длину (символы): N C × (N - K + S - P) Выходная длина (символы): N C × S |
N - длина кодового слова.
K - размер слова сообщения.
S - сокращённый размер слова сообщения.
N C - количество кодовых слов (и слов сообщений).
P - количество проколов, и равно количеству нулей в векторе прокола.
M - это степень примитивного полинома. Каждая группа M бит представляет целое число между 0
и 2M–1
который принадлежит конечному полю Галуа GF (2M)
.
Для получения дополнительной информации о представлении данных для кодов Рида-Соломона, смотрите Целочисленный формат (только для Рида-Соломона).
Если вы не выбираете 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), что соответствует значениям, которые формируют слова сообщения и кодовые слова.
Можно задать примитивный полином, который задает конечное поле GF (2M), соответствующий целым числам, которые формируют сообщения и кодовые слова. Для этого сначала выберите Specify primitive polynomial. Затем в Primitive polynomial текстовом поле введите двоичный вектор-строку, который представляет примитивный полином над GF (2M), в порядке убывания степеней. Для примера задать полином x3+ x + 1, введите вектор [1 0 1 1]
.
Если вы не выбираете Specify primitive polynomial, блок использует примитивный полином по умолчанию степени M = ceil (log2 (N + 1)). Полином по умолчанию можно отобразить путем ввода primpoly(ceil(log2(N+1)))
в MATLAB® приглашение.
Выберите 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.
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.