lteTurboDecode

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

Синтаксис

out = lteTurboDecode(in)
out = lteTurboDecode(in,nturbodecits)

Описание

пример

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 (логарифмический MAP Max) алгоритм.

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')

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

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. “Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: http://www.3gpp.org.

Введенный в R2014a