nrCodeBlockDesegmentLDPC

Код LDPC блокирует декодирование десегментации и CRC

Описание

пример

[blk,err] = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen) конкатенирует входные сегменты cbs блока кода в один блок blk выходных данных из длины blklen. Функция подтверждает размерности данных входа cbs на основе заданного основного номера графика bgn и выходная длина блока blklen. Функция удаляет любые биты заполнителя и биты контроля циклическим избыточным кодом (CRC) типа-24B, существующие во входе cbs. Выход err результат CRC типа-24B, декодирующего (если применимо). Этот процесс является инверсией сегментации блока имеющей малую плотность проверки четности (LDPC) кода, заданной в Разделе TS 38.212 5.2.2 [1] и реализованный в nrCodeBlockSegmentLDPC.

Примеры

свернуть все

Выполните сегментацию блока кода случайной последовательности данных о двоичном входе.

bgn = 1;
blklen = 10000;
cbs = nrCodeBlockSegmentLDPC(randi([0 1],blklen,1),bgn);

Когда основной номер графика равняется 1, сегментация происходит каждый раз, когда входная длина больше 8448. Входные данные длины 10000 разделены в два сегмента блока кода длины 5280. Сегменты блока кода имеют биты заполнителя и присоединенный CRC.

size(cbs)
ans = 1×2

        5280           2

Конкатенация кода блокирует сегменты.

[blk,err] = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen);

Конкатенированный результат одного размера с исходным входом с CRC и удаленными битами заполнителя.

blkSize = size(blk)
blkSize = 1×2

       10000           1

Проверьте, было ли декодирование CRC успешно путем проверки вектора ошибок.

err
err = 1x2 uint32 row vector

   0   0

Создайте матрицу, представляющую два сегмента блока кода. Каждый элемент содержит линейный индекс того элемента в матрице.

cbs = reshape([1:10560]',[],2);

Конкатенация кода блокирует сегменты с помощью заданного основного номера графика и выходной длины блока.

bgn = 1;
blklen = 10000;
blk = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen);

Чтобы видеть, как вход сопоставляет на выход, индексы сегмента блока графика кода относительно соответствующих индексов в конкатенированном входе. В каждом сегменте блока кода последние 280 битов представляют биты заполнителя и CRC. Эти дополнительные биты удалены из восстановленных данных.

plot(blk);
xlabel('Code Block Bit Indices');
ylabel('Recovered Data Bit Indices');
title('Code Block Desegmentation Operation');

Figure contains an axes object. The axes object with title Code Block Desegmentation Operation contains an object of type line.

Входные параметры

свернуть все

Сегменты блока кода в виде действительной матрицы. Матрица A только с одним столбцом соответствует одному сегменту блока кода без добавленных битов CRC. Если вы задаете матрицу больше чем с одним столбцом, каждый столбец в матрице соответствует разделять сегменту блока кода с добавленными битами CRC типа-24B. В обоих случаях сегменты блока кода могут содержать биты заполнителя.

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

Основной номер графика в виде 1 или 2.

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

Выведите длину блока в виде неотрицательного целого числа. Если blklen 0, затем оба blk и err пусты. Функция использует blklen подтверждать размерности данных входа cbs и вычислить количество битов заполнителя, чтобы удалить.

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

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

свернуть все

Конкатенированный блок данных, возвращенный как пустой вектор (когда blklen 0) или действительный вектор-столбец. Функция удаляет любые биты заполнителя и биты CRC типа-24B, существующие во входе cbs. Выход blk наследовал его тип данных от входа cbs.

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

Ошибка CRC, возвращенная как одно из этих значений:

  • Пустой вектор — функция возвращает это значение когда blklen 0 или если cbs имеет только один столбец (декодирование CRC не происходит).

  • Вектор из неотрицательных целых чисел — Если cbs имеет больше чем один столбец, err содержит биты ошибки CRC, полученные из декодирования битов CRC типа-24B в каждом сегменте блока кода. Длина err равно количеству сегментов блока кода (количество столбцов во входе cbs).

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

Ссылки

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

Функции

Введенный в R2018b