Декодирование с низкой плотностью проверки четности (LDPC)
[
возвращает декодированную LDPC выходную матрицу out
,actNumIter
,finalParityChecks
] = nrLDPCDecode(in
,bgn
,maxNumIter
)out
для матрицы входных данных in
, базовый номер график bgn
и максимальное количество итераций декодирования maxNumIter
. Функция также возвращает фактическое количество итераций actNumIter
и конечные проверки четности по кодовому слову finalParityChecks
.
Декодер использует алгоритм передачи суммарного сообщения. Биты данных должны быть закодированы LDPC, как определено в TS 38.212 Раздел 5.3.2 [1].
[
задает необязательные аргументы аргументы пары "имя-значение" дополнение к входным параметрам в предыдущем синтаксисе.out
,actNumIter
,finalParityChecks
] = nrLDPCDecode(___,Name,Value
)
Создайте данные передачи, состоящие из двух сегментов кодового блока длиной 2560 и 36 битов наполнителя на конце.
C = 2; K = 2560; F = 36; txcbs = ones(K-F,C); fillers = -1*ones(F,C); txcbs = [txcbs;fillers];
Сгенерируйте кодовое слово LDPC для передающих данных. Используйте базовый график номер два.
bgn = 2; txcodedcbs = nrLDPCEncode(txcbs,bgn);
Преобразуйте данные передачи в мягкие биты. Наполнители в данных передачи не имеют журнала мягких бит отношения правдоподобия (LLR).
rxcodedcbs = double(1-2*txcodedcbs); FillerIndices = find(txcodedcbs(:,1) == -1); rxcodedcbs(FillerIndices,:) = 0;
Декодируйте закодированное кодовое слово максимум с 25 итерациями.
[rxcbs,actualniters] = nrLDPCDecode(rxcodedcbs,bgn,25);
Замените биты наполнителя на ноль в передающих данных и сравните результаты кодирования и декодирования.
txcbs(end-F+1:end,:) = 0; isequal(rxcbs,txcbs)
ans = logical
1
actualniters
actualniters = 1×2
1 1
in
- Скорость восстановленных мягких бит для сегментов входного кодового блокаСкорость восстановления мягких бит для сегментов входа кода блока, заданная как действительная матрица. Количество столбцов в in
равен количеству запланированных сегментов блока кода. Количество строк в in
равен длине кодового слова, с некоторыми систематическими битами, проколотыми.
Типы данных: double
| single
bgn
- Базовый номер графика1
| 2
Базовый номер графика, заданный как 1
или 2
. Значение выбирает один из двух базовых графиков, определенных в TS 38.212 Раздел 5.3.2 [1].
Типы данных: double
maxNumIter
- Максимальное количество итераций декодированияМаксимальное количество итераций декодирования, заданное как положительный целочисленный скаляр. Декодирование прекращается, когда все проверки четности удовлетворены, или после maxNumIter
количество итераций.
Типы данных: double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter,'DecisionType','hard')
'OutputFormat'
- Выход'info'
(по умолчанию) | 'whole'
Выход, заданный как разделенная разделенными запятой парами, состоящая из 'OutputFormat'
и одно из следующих значений:
'info'
- Количество строк в out
равен длине информационных бит.
'whole'
- Количество строк в out
равен длине кодового слова.
Типы данных: char
| string
'DecisionType'
- Метод принятия решений, используемый для декодирования'hard'
(по умолчанию) | 'soft'
Метод принятия решений, используемый для декодирования, задается как разделенная разделенными запятой парами, состоящая из 'DecisionType'
и одно из следующих значений:
Типы данных: char
| string
'Algorithm'
- алгоритм декодирования LDPC'Belief propagation'
(по умолчанию) | 'Layered belief propagation'
| 'Normalized min-sum'
| 'Offset min-sum'
Алгоритм декодирования LDPC, заданный как разделенная разделенными запятой парами, состоящая из 'Algorithm'
и одно из следующих значений:
'Belief propagation'
- Используйте эту опцию, чтобы задать алгоритм передачи убеждений или сообщений. Для получения дополнительной информации см. «Декодирование распространения убеждений».
'Layered belief propagation'
- Используйте эту опцию, чтобы задать слоистый алгоритм передачи убеждений, который подходит для квазициклических матриц проверки четности (PCM). Для получения дополнительной информации см. «Декодирование Многоуровневого Распространения Убеждений».
'Normalized min-sum'
- Используйте эту опцию, чтобы задать слоистый алгоритм распространения убеждений с нормализованной аппроксимацией min-sum. Для получения дополнительной информации смотрите Нормированное декодирование Min-Sum.
'Offset min-sum'
- Используйте эту опцию, чтобы задать алгоритм распространения многослойных убеждений со смещением min-sum приближения. Для получения дополнительной информации смотрите Offset Min-Sum Decoding.
Примечание
Когда вы задаете значение этого аргумента пары "имя-значение" как 'Normalized min-sum'
или 'Offset min-sum'
функция обрезает входные значения (отношение логарифмической правдоподобности) LLR до области значений [-1e10 1e10] перед декодированием.
Типы данных: char
| string
'ScalingFactor'
- Масштабный коэффициент для нормированного декодирования min-sum0.75
(по умолчанию) | действительный скаляр в области значений (0, 1]Масштабный коэффициент для нормированного декодирования min-sum, заданный как разделенная разделенными запятой парами, состоящая из 'ScalingFactor'
и действительный скаляр в области значений (0, 1].
Чтобы включить этот аргумент пары "имя-значение", установите значение '
аргумент пары "имя-значение" в Algorithm
''Normalized min-sum'
.
Типы данных: double
'Offset'
- Смещение для декодирования смещения min-sum0.5
(по умолчанию) | неотрицательным конечным вещественным скаляромСмещение для декодирования смещения min-sum, заданное как разделенная разделенными запятой парами, состоящая из 'Offset'
и неотрицательный конечный действительный скаляр.
Чтобы включить этот аргумент пары "имя-значение", установите значение '
аргумент пары "имя-значение" в Algorithm
''Offset min-sum'
.
Типы данных: double
'Termination'
- Критерий завершения декодирования'early'
(по умолчанию) | 'max'
Критерии окончания декодирования, заданные как разделенная разделенными запятой парами, состоящая из 'Termination'
и одно из следующих значений:
'early'
Декодирование завершается, когда все проверки четности удовлетворены или после maxNumIter
количество итераций.
'max'
- декодирование завершается после maxNumIter
количество итераций.
Типы данных: char
| string
out
- Декодированное кодовое слово LDPCДекодированное кодовое слово LDPC или информационные биты, возвращенные как действительная матрица. Количество столбцов в out
равен количеству запланированных сегментов блока кода. Количество строк в out
зависит от аргумента пары "имя-значение" 'OutputFormat'
. Тип данных out
зависит от аргумента пары "имя-значение" 'DecisionType'
.
Типы данных: single
| double
| int8
actNumIter
- Фактическое количество итерацийФактическое количество итераций, возвращенных как вектор-строка положительных целых чисел. Длина actNumIter
равно количеству столбцов в in
. The i
первый элемент в actNumIter
соответствует фактическому количеству итераций, выполненных для i
1-й столбец in
.
Типы данных: double
finalParityChecks
- Окончательные проверки четностиОкончательные проверки четности, возвращенные как матрица. Количество строк в finalParityChecks
равен количеству бит проверки четности в кодовом слове LDPC. The i
первый столбец в finalParityChecks
соответствует конечным проверкам четности для i
второе кодовое слово.
Типы данных: double
The nrLDPCDecode
функция поддерживает эти четыре алгоритма декодирования LDPC.
Реализация алгоритма распространения убеждений основана на алгоритме декодирования, представленном в [2]. Для переданного кодового слова с кодировкой LDPC, c, где , входом для декодера LDPC является значение отношения логарифмической правдоподобности (LLR) .
В каждой итерации ключевые компоненты алгоритма обновляются на основе этих уравнений:
,
, инициализированный как перед первой итерацией, и
.
В конце каждой итерации, является обновленной оценкой значения LLR для переданного бита . Значение - выходы мягкого решения для . Если , выход жесткого решения для равен 1. В противном случае выводится значение 0.
Наборы индексов и основаны на матрице проверки четности (PCM). Наборы индексов и соответствуют всем ненулевым элементам в столбцах i и j строках PCM, соответственно.
Этот рисунок подсвечивает расчет этих наборов индексов в заданном PCM для i = 5 и j = 3.
Чтобы избежать бесконечных чисел в уравнениях алгоритма, atanh (1) и atanh (-1) устанавливаются в 19.07 и -19.07 соответственно. Из-за конечной точности MATLAB® возвращает 1 для танха (19.07) и -1 для танха (-19.07).
Когда аргумент пары "имя-значение" 'Termination'
установлено в 'max'
декодирование заканчивается после maxNumIter
количество итераций. Когда 'Termination'
установлено в 'early'
декодирование заканчивается, когда выполняются все проверки четности () или после maxNumIter
количество итераций.
Реализация алгоритма распространения многоуровневых убеждений основана на алгоритме декодирования, представленном в [3], раздел II.A. Цикл декодирования итерирует над подмножествами строк (слоев) PCM. Для каждой строки, m, в слое и каждом битовом индексе, j, реализация обновляет ключевые компоненты алгоритма на основе этих уравнений:
(1) ,
(2) ,
(3) ,
(4) , и
(5) .
Для каждого слоя уравнение декодирования (5) работает на объединенном входе, полученном из текущих входов LLR и обновляется предыдущий слой .
Поскольку в слое обновляется только подмножество узлов, алгоритм распространения многослойных убеждений быстрее по сравнению с алгоритмом распространения убеждений. Чтобы достичь той же частоты ошибок, что и при декодировании распространения убеждений, используйте половину количества итераций декодирования при использовании алгоритма распространения многоуровневых убеждений.
Реализация нормированного алгоритма декодирования min-sum следует многоуровневому алгоритму распространения убеждений с уравнением (2), замененным на
,
где α находится в области значений (0, 1] и является масштабным коэффициентом, заданным ScalingFactor
. Это уравнение является адаптацией уравнения (4), представленного в [4].
[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[2] Gallager, Robert G. Low-Density Parity-Check Codes, Cambridge, MA, MIT Press, 1963.
[3] Hocevar, D.E. «архитектура декодера пониженной сложности посредством многоуровневого декодирования кодов LDPC». Семинар IEEE по системам обработки сигналов, 2004 год. SIPS 2004. doi: 10.1109/SIPS.2004.1363033
[4] Chen, Jinghu, R.M. Tanner, C. Jones и Yan Li. «Улучшенные алгоритмы декодирования min-sum для неправильных кодов LDPC». В производстве. Международный симпозиум по теории информации, 2005 год. ISIT 2005. doi: 10.1109/ISIT.2005.1523374
Указания и ограничения по применению:
Имена и значения в аргументах пары "имя-значение" должны быть константами времени компиляции. Для примера при указании типа мягкого решения включите {coder.Constant('DecisionType'),coder.Constant('soft')}
в -args
значение codegen
функция. Для получения дополнительной информации смотрите coder.Constant
(MATLAB Coder).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.