Декодирование имеющей малую плотность проверки четности (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)
Создайте данные о передаче, состоящие из двух сегментов блока кода длины 2 560 и 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 — Основной номер графика| 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' 'OutputFormat' 'info' (значение по умолчанию) | 'whole'Выходной формат в виде разделенной запятой пары, состоящей из 'OutputFormat' и одно из этих значений:
'info' — Количество строк в out равно длине информационных битов.
'whole' — Количество строк в out равно длине кодовой комбинации.
Типы данных: char | string
'DecisionType' — Метод решения используется для декодирования'hard' (значение по умолчанию) | 'soft''Algorithm' — LDPC декодирование алгоритма'Belief propagation' (значение по умолчанию) | 'Layered belief propagation' | 'Normalized min-sum' | 'Offset min-sum'LDPC декодирование алгоритма в виде разделенной запятой пары, состоящей из 'Algorithm' и одно из этих значений:
'Belief propagation' — Используйте эту опцию, чтобы задать алгоритм передающей веру или передачи сообщений. Для получения дополнительной информации смотрите, что Распространение Веры Декодирует.
'Layered belief propagation' — Используйте эту опцию, чтобы задать многоуровневый передающий веру алгоритм, который подходит для квазициклических матриц проверки четности (PCMs). Для получения дополнительной информации смотрите, что Многоуровневое Распространение Веры Декодирует.
'Normalized min-sum' — Используйте эту опцию, чтобы задать многоуровневый алгоритм распространения веры нормированным приближением суммы min. Для получения дополнительной информации смотрите, что Нормированная Сумма Min Декодирует.
'Offset min-sum' — Используйте эту опцию, чтобы задать многоуровневый алгоритм распространения веры приближением суммы min смещения. Для получения дополнительной информации смотрите, что Сумма Min Смещения Декодирует.
Примечание
Когда вы задаете значение этого аргумента пары "имя-значение" как 'Normalized min-sum' или 'Offset min-sum', функция отсекает вход (отношение логарифмической правдоподобности) значения LLR к [-1e10 1e10] область значений перед декодированием.
Типы данных: char | string
'ScalingFactor' — Масштабный коэффициент для нормированного декодирования суммы min (значение по умолчанию) | действительный скаляр в области значений (0, 1]Масштабный коэффициент для нормированного декодирования суммы min в виде разделенной запятой пары, состоящей из 'ScalingFactor' и действительный скаляр в области значений (0, 1].
Чтобы включить этот аргумент пары "имя-значение", установите ' аргумент пары "имя-значение" Algorithm''Normalized min-sum'.
Типы данных: double
'Offset' — Возместите для декодирования суммы min смещения (значение по умолчанию) | неотрицательный конечный действительный скалярВозместите для декодирования суммы min смещения в виде разделенной запятой пары, состоящей из '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. iэлемент th в actNumIter соответствует фактическому количеству итераций, выполняемых для iстолбец th in.
Типы данных: double
finalParityChecks — Итоговые проверки четностиИтоговые проверки четности, возвращенные как матрица. Количество строк в finalParityChecks равно количеству битов проверки четности в кодовой комбинации LDPC. iстолбец th в finalParityChecks соответствует итоговым проверкам четности для iкодовая комбинация th.
Типы данных: double
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 для tanh (19.07) и –1 для tanh (–19.07).
Когда аргумент пары "имя-значение" 'Termination' установлен в 'max', декодирование завершает работу после maxNumIter количество итераций. Когда 'Termination' установлен в 'early', декодирование завершает работу, когда всем проверкам четности удовлетворяют () или после maxNumIter количество итераций.
Реализация многоуровневого алгоритма распространения веры основана на алгоритме декодирования, представленном в [3], Раздел II.A. Цикл декодирования выполняет итерации по подмножествам строк (слои) PCM. Для каждой строки, m, в слое и каждом битном индексе, j, реализация обновляет ключевые компоненты алгоритма на основе этих уравнений:
(1) ,
(2) ,
(3) ,
(4) , и
(5) .
Для каждого слоя уравнение (5) декодирования работает над объединенным входом, полученным из текущих входных параметров LLR и предыдущие обновления слоя .
Поскольку только подмножество узлов обновляется в слое, многоуровневый алгоритм распространения веры быстрее по сравнению с алгоритмом распространения веры. Чтобы достигнуть того же коэффициента ошибок, как достигнуто с декодированием распространения веры, используйте половину количества декодирования итераций при использовании многоуровневого алгоритма распространения веры.
Реализация нормированного алгоритма декодирования суммы min следует многоуровневому алгоритму распространения веры уравнением (2), замененным
,
где α находится в области значений (0, 1], и масштабный коэффициент, заданный ScalingFactor. Это уравнение является адаптацией уравнения (4), представленного в [4].
[1] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] Gallager, Роберт Г. Имеющие малую плотность коды с проверкой четности, Кембридж, MA, нажатие MIT, 1963.
[3] Hocevar, D.E. "Уменьшаемая архитектура декодера сложности через многоуровневое декодирование кодов LDPC". В Семинаре IEEE по Системам Обработки сигналов, 2004. ГЛОТКИ 2004. doi: 10.1109/SIPS.2004.1363033
[4] Чен, Jinghu, Р.М. Таннер, К. Джонс и Ян Ли. "Улучшенные алгоритмы декодирования суммы min для неправильных кодов 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.