lteTurboDecode

Турбодекодирование

Описание

пример

out = lteTurboDecode(in) возвращает результат турбодекодирования входных данных in. Функция может декодировать отдельные векторы данных или массивы ячеек векторов данных. В случае входа массива ячеек выходным сигналом является массив ячеек, содержащий отдельно декодированные векторы входа массива. Входные данные приняты как мягкие битовые данные, которые были закодированы с параллельным конкатенированным сверточным кодом (PCCC), как определено в TS 36.212 [1], раздел 5.1.3.2. Каждый вектор входных данных принимается структурированным как три закодированных потока четности, сгруппированных блочно, [S P1 P2], где S - вектор систематических бит, P1 - вектор энкодера 1 бит, и P2 - вектор энкодера 2 бита. Декодер использует значение по умолчанию 5 циклов итерации. Он возвращает декодированные биты в выходном векторе out после выполнения турбодекодирования с использованием алгоритма sub-log-MAP (Max-Log-MAP).

out = lteTurboDecode(in,nturbodecits) обеспечивает управление количеством циклов итерации турбодекодирования через параметр nturbodecits. The nturbodecits является необязательным параметром. Если он не предусмотрен, он использует значение по умолчанию 5 циклов итерации.

Примеры

свернуть все

Выполните турбодекодирование мягких бит, полученных из шумного созвездия.

Создайте поток битов, турбокодируйте поток битов и модулируйте его. Создайте шум, добавьте его к модулированным символам. Отображение переданных и принятых символов на график поля точек.

txBits = randi([0 1],6144,1);
codedData = lteTurboEncode(txBits);
txSymbols = lteSymbolModulate(codedData,'QPSK');
noise = 0.5*complex(randn(size(txSymbols)),randn(size(txSymbols)));
rxSymbols = txSymbols + noise;

scatter(real(rxSymbols),imag(rxSymbols),'co'); 
hold on;

scatter(real(txSymbols),imag(txSymbols),'rx')
legend('Rx constellation','Tx constellation')

Figure contains an axes. The axes contains 2 objects of type scatter. These objects represent Rx constellation, Tx constellation.

Демодулируйте символы и турбодекодируйте мягкие биты. Сравните переданные и восстановленные биты.

softBits = lteSymbolDemodulate(rxSymbols,'QPSK','Soft');
rxBits = lteTurboDecode(softBits);
numberErrors = sum(rxBits ~= int8(txBits))
numberErrors = 0

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

свернуть все

Входные данные мягкого бита, заданные как числовой вектор или массив ячеек из векторов. Декодер ожидает, что входные биты будут закодированы параллельно конкатенированным сверточным кодом (PCCC), как определено в TS 36.212 [1], раздел 5.1.3.

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

Количество циклов итерации турбодекодера, заданное как положительное скалярное целое число между 1 и 30. Необязательно.

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

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

свернуть все

Турбодекодированные биты, возвращенные как целое число вектора-столбца или массив ячеек из целочисленных векторов-столбцов.

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

Ссылки

[1] 3GPP TS 36.212. "Evolved Universal Terrestrial Radio Access (E-UTRA); Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ. URL-адрес: https://www.3gpp.org.

Введенный в R2014a