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, с заданным набором имени свойства к заданному значению. Name должен появиться в одинарных кавычках (''). Можно задать несколько аргументов пары "имя-значение" в любом порядке как 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