exponenta event banner

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. 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. "Развитый универсальный наземный радиодоступа (E-UTRA); мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы. URL: https://www.3gpp.org.

Представлен в R2014a