comm.gpu.TurboDecoder

Декодируйте входной сигнал с помощью декодирования параллельной конкатенации на графическом процессоре

Описание

The GPU Turbo Decoder Система object™ декодирует входной сигнал с помощью параллельной схемы декодирования. Эта схема использует a-апостериорный декодер вероятности (APP) в качестве составляющего декодера. Оба составляющих декодера используют одну и ту же решетчатую структуру и алгоритм.

Примечание

Чтобы использовать этот объект, необходимо установить лицензию Parallel Computing Toolbox™ и иметь доступ к соответствующему графическому процессору. Для получения дополнительной информации о графических процессорах см. раздел «Графические процессоры» (Parallel Computing Toolbox).

Объект System на базе GPU принимает типовой MATLAB® массивы или объекты, созданные с помощью gpuArray класс. Объект System на основе GPU поддерживает входные сигналы с типами данных двойной или одинарной точности. Сигнал выхода наследует свой тип данных от входного сигнала.

  • Если входной сигнал является массивом MATLAB, системный объект обрабатывает передачу данных между центральным процессором и графическим процессором. Сигнал выхода является массивом MATLAB.

  • Если входной сигнал является gpuArray, данные остаются на графическом процессоре. Выходной сигнал является gpuArray. Когда объекту задается gpuArrayвычисления происходят полностью на графическом процессоре, и передача данных не происходит. Передача gpuArray аргументы обеспечивают увеличение эффективности за счет сокращения времени симуляции. Для получения дополнительной информации смотрите Установка массивов на графическом процессоре (Parallel Computing Toolbox).

Для декодирования входного сигнала с помощью схемы турбодекодирования:

  1. Определите и настройте объект турбодекодера. См. «Конструкция».

  2. Функции step декодировать двоичный сигнал согласно свойствам comm.gpu.TurboDecoder. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

H = comm.gpu.TurboDecoder создает турбодекодер на базе GPU Системного объекта, H. Этот объект использует составляющий декодер a-апостериорной вероятности (APP), чтобы итерационно декодировать параллельно конкатенированные сверточно закодированные входные данные.

H = comm.gpu.TurboDecoder(Name, Value) создает объект турбодекодера на базе GPU, H, с заданным именем свойства, установленным на заданное значение. Name должны находиться внутри одинарных кавычек (''). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,…,NameN,ValueN.

H = comm.gpu.TurboDecoder(TRELLIS, INTERLVRINDICES, NUMITER) создает объект турбодекодера на базе GPU, H. В этом объекте TrellisStructure для свойства задано значение TRELLIS, а InterleaverIndices значение свойства установлено в INTERLVRINDICES, и NumIterations значение свойства установлено в NUMITER.

Свойства

TrellisStructure

Структура треллиса составного сверточного кода

Задайте шпалеру как структуру MATLAB, которая содержит описание шпалеры составного сверточного кода. По умолчанию это результат poly2trellis(4, [13 15], 13). Используйте istrellis функция для проверки, является ли структура допустимой решетчатой структурой.

InterleaverIndicesSource

Источник индексов перемежителя

Укажите источник индексов перемежителя. Единственный допустимый параметр для этого свойства Property.

InterleaverIndices

Индексы перемежителя

Задайте отображение, используемую для транспозиции входа бит в энкодере, как вектор-столбец целых чисел. Значение по умолчанию является (64:-1:1).'. Это отображение является вектором с количеством элементов, равным длине, L, выхода метода step. Каждый элемент должен быть целым числом от 1 до L, без повторных значений.

Algorithm

Алгоритм декодирования

Задайте алгоритм декодирования. Этот объект реализует истинное апостериорное декодирование вероятностей. Единственная допустимая настройка True APP.

NumScalingBits

Количество бит масштабирования

Версия GPU Turbo Decoder не использует это свойство.

NumIterations

Количество итераций декодирования

Задайте количество итераций декодирования, используемых для каждого вызова в step способ. Значение по умолчанию является 6. Объект итератирует и предоставляет обновления коэффициентов логарифмической правдоподобности (LLR) незакодированных выходных бит. Выходы метода step - это выходы окончательного обновления LLR с твердым решением.

NumFrames

Количество независимых систем координат, присутствующих в векторах входных и выходных данных.

Задайте количество независимых систем координат, которое содержит один вектор ввода/вывода данных. Значение по умолчанию этого свойства 1. Этот объект сегментирует вектор входа на NumFrames сегментирует и декодирует сегменты независимо. Выходы содержат NumFrames декодированные сегменты.

Методы

шагДекодируйте входной сигнал с помощью параллельной конкатенированной схемы декодирования
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

reset

Сброс внутренних состояний Системного объекта

Примеры

свернуть все

Передайте турбокодированные блоки данных по каналу AWGN с модуляцией BPSK. Затем декодируйте с помощью итерационного турбодекодера и отображайте ошибки.

Задайте переменную шума, установите длину системы координат 256 и используйте свойство случайного потока, чтобы результаты были повторяемыми.

noiseVar = 4; frmLen = 256;
s = RandStream('mt19937ar', 'Seed', 11);
intrlvrIndices = randperm(s, frmLen);

Создайте объект Turbo Encoder System. Решетчатая структура составного сверточного кода представляет собой поли2trellis (4, [13 15 17], 13). The InterleaverIndices свойство задает отображение, которую объект использует для транспозиции входа бит в энкодере, как вектор-столбец целых чисел.

turboEnc = comm.TurboEncoder('TrellisStructure', poly2trellis(4, ...
      [13 15 17], 13), 'InterleaverIndices', intrlvrIndices);

Создайте объект BPSK Modulator System.

bpsk = comm.BPSKModulator;

Создайте объект системы канала AWGN.

channel = comm.AWGNChannel('NoiseMethod', 'Variance', 'Variance', ...
      noiseVar);

Создайте объект Turbo Decoder System на базе графического процессора. Решетчатая структура составного сверточного кода представляет собой поли2trellis (4, [13 15 17], 13). The InterleaverIndicies свойство задает отображение, которую объект использует для транспозиции входа бит в энкодере, как вектор-столбец целых чисел.

turboDec = comm.gpu.TurboDecoder('TrellisStructure', poly2trellis(4, ...
      [13 15 17], 13), 'InterleaverIndices', intrlvrIndices, ...
      'NumIterations', 4);

Создайте объект Error Rate System.

errorRate = comm.ErrorRate;

Запустите симуляцию.

for frmIdx = 1:8
 data = randi(s, [0 1], frmLen, 1);
 encodedData = turboEnc(data);
 modSignal = bpsk(encodedData);
 receivedSignal = channel(modSignal); 

Преобразуйте принятый сигнал в логарифмические коэффициенты логарифмической правдоподобности для декодирования.

receivedBits  = turboDec(-2/(noiseVar/2))*real(receivedSignal));

Сравните исходные данные с полученными данными и затем вычислите результаты частоты ошибок.

errorStats = errorRate(data,receivedBits);
end
fprintf('Error rate = %f\nNumber of errors = %d\nTotal bits = %d\n', ...
errorStats(1), errorStats(2), errorStats(3))

Алгоритмы

Этот объект реализует входы и выходы, описанные на Turbo Decoder блока страницы с описанием. Свойства объекта соответствуют параметрам блоков.

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

Введенный в R2012a