nrLDPCDecode

Декодирование имеющей малую плотность проверки четности (LDPC)

Синтаксис

[out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter)
[out,actNumIter,finalParityChecks] = nrLDPCDecode(___,Name,Value)

Описание

[out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter) возвращает LDPC-декодируемую выходную матрицу 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 равно длине кодовой комбинации с некоторыми систематическими проколотыми битами.

Типы данных: double | single

Основной номер графика, заданный как 1 или 2. Значение выбирает один из двух основных графиков, заданных в Разделе TS 38.212 5.3.2 [1].

Типы данных: double

Максимальное количество декодирования итераций, заданных как скаляр. Декодирование отключено, когда все проверки четности удовлетворены, или после количества maxNumIter итераций.

Типы данных: double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter,'DecisionType','hard')

Выходной формат, заданный как пара, разделенная запятой, состоящая из 'OutputFormat' и одно из этих значений:

  • информация Количество строк в out равно длине информационных битов.

  • 'whole' — Количество строк в out равно длине кодовой комбинации.

Типы данных: char | string

Метод решения используется для декодирования, заданный как пара, разделенная запятой, состоящая из 'DecisionType' и одно из этих значений:

  • 'hard' — Типом данных out является int8.

  • 'soft' — Вывод out содержит логарифмические отношения правдоподобия совпадающего типа данных как in.

Типы данных: char | string

Декодирование критериев завершения, заданных как пара, разделенная запятой, состоящая из 'Termination' и одно из этих значений:

  • 'early' — Декодирование останавливается, когда все проверки четности удовлетворены или после количества maxNumIter итераций.

  • Max Декодирование останавливается после количества maxNumIter итераций.

Типы данных: char | string

Выходные аргументы

свернуть все

Декодируемая кодовая комбинация LDPC или информационные биты, возвращенные как матрица. Количество столбцов в out равно количеству запланированных сегментов блока кода. Количество строк в out зависит от аргумента пары "имя-значение" 'OutputFormat'. Тип данных out зависит от аргумента пары "имя-значение" 'DecisionType'.

Типы данных: single | double | int8

Фактическое количество итераций, возвращенных как вектор - строка из положительных целых чисел. Длина actNumIter равна количеству столбцов в in. i th элемент в actNumIter соответствует фактическому количеству итераций, выполняемых для i th столбец in.

Типы данных: double

Итоговые проверки четности, возвращенные как матрица. Количество строк в finalParityChecks равно количеству битов проверки четности в кодовой комбинации LDPC. i th столбец в finalParityChecks соответствует итоговым проверкам четности для i th кодовая комбинация.

Типы данных: double

Ссылки

[1] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

Расширенные возможности

Смотрите также

Функции

Введенный в R2018b