comm.gpu. TurboDecoder

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

Описание

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

Примечание

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

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

  • Если входной сигнал является массивом 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 создает основанный на графическом процессоре турбо Системный объект декодера, H. Этот объект использует декодер составляющей по опыту вероятности (APP), чтобы итеративно декодировать конкатенированные параллелью convolutionally закодированные входные данные.

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

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

Свойства

TrellisStructure

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

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

InterleaverIndicesSource

Источник interleaver индексов

Задайте источник interleaver индексов. Единственной допустимой установкой для этого свойства является Property.

InterleaverIndices

Индексы Interleaver

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

Algorithm

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

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

NumScalingBits

Количество масштабирующихся битов

Версия графического процессора Турбо Декодера не использует это свойство.

NumIterations

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

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

NumFrames

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

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

Методы

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

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

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

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

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

Создайте Турбо Системный объект Энкодера. Структура решетки для составляющего сверточного кода является poly2trellis (4, [13 15 17], 13). Свойство InterleaverIndices задает отображение объектного использования, чтобы переставить входные биты в энкодере как вектор-столбец целых чисел.

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

Создайте Системный объект Модулятора BPSK.

bpsk = comm.BPSKModulator;

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

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

Создайте Основанный на графическом процессоре Турбо Системный объект Декодера. Структура решетки для составляющего сверточного кода является poly2trellis (4, [13 15 17], 13). Свойство InterleaverIndicies задает отображение объектного использования, чтобы переставить входные биты в энкодере как вектор-столбец целых чисел.

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

Создайте Системный объект Коэффициента ошибок.

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