comm.gpu. ViterbiDecoder

Декодируйте convolutionally закодированное использование данных алгоритм Viterbi с графическим процессором

Описание

Система GPU ViterbiDecoder object™ декодирует вводимые символы, чтобы произвести символы двоичного выхода с помощью графического процессора (GPU). Этот объектный переменный размер процессов сигналы; однако, сигналы переменного размера не могут быть применены для входных параметров стирания.

Примечание

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

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

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

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

Декодировать вводимые символы и произвести символы двоичного выхода:

  1. Задайте и настройте свой объект Декодера Витерби. Смотрите Конструкцию.

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

Примечание

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

Конструкция

H = comm.gpu.ViterbiDecoder создает Системный объект Декодера Витерби, H. Этот объект использует алгоритм Viterbi, чтобы декодировать convolutionally закодированные входные данные.

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

H = comm.gpu.ViterbiDecoder(TRELLIS,Name,Value) создает объект Декодера Витерби, H, с набором свойств TrellisStructure к TRELLIS и другим заданным набором имен свойства к заданным значениям.

Свойства

TrellisStructure

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

Задайте решетку как структуру MATLAB, которая содержит описание решетки сверточного кода. Используйте функцию istrellis, чтобы проверять, является ли структура допустимой структурой решетки. Этот уровень поддержки объектов 1/2, 1/3 и 1/4 решетки от простых feedforward энкодеров. Значение по умолчанию является результатом poly2trellis(7, [171 133]).

InputFormat

'InputFormat'

Задайте формат входа к декодеру как один из Unquantized | Hard | Soft. Значением по умолчанию является Unquantized.

Когда вы устанавливаете это свойство на Unquantized, вход должен быть вектором действительных чисел двойной или одинарной точности неквантованные мягкие значения. Объект полагает, что отрицательные числа единицы и положительные числа, чтобы быть нулями. Когда вы устанавливаете это свойство на Hard, вход должен быть вектором значений трудного решения, которые являются нулями или единицами. Тип данных входных параметров может быть двойная точность или одинарная точность. Когда вы устанавливаете это свойство на Soft, вход должен быть вектором квантованных мягких значений, представленных как целые числа между 0 и 2 ^SoftInputWordLength-1. Тип данных входных параметров может быть двойная точность или одинарная точность.

SoftInputWordLength

Мягкий входной размер слова

Укажите, что количество битов раньше представляло каждое квантованное мягкое входное значение как положительное, целочисленный скаляр. Это свойство применяется, когда вы устанавливаете свойство InputFormat на Soft. Значением по умолчанию являются биты 4.

InvalidQuantizedInputAction

Действие, когда входные значения вне области значений

Единственной допустимой установкой является Ignore, который игнорирует из входных параметров области значений.

TracebackDepth

Глубина Traceback

Укажите, что количество ответвлений решетки раньше создавало каждый traceback путь как положительное, целочисленный скаляр, меньше чем или равный 256. traceback глубина влияет на точность декодирования и задержку. Количество нулевых символов, которые предшествуют первому декодируемому символу в выводе, представляет задержку декодирования. Когда вы устанавливаете свойство TerminationMethod на Continuous, задержка декодирования состоит из нулевых символов TracebackDepth или нулевых битов TracebackDepth для уровня сверточный код 1/N. Когда вы устанавливаете свойство TerminationMethod на Truncated или Terminated, нет никакой выходной задержки, и TracebackDepth должен быть меньше чем или равен количеству символов в каждом входе. Если уровень кода является 1/2, типичное traceback значение глубины является приблизительно пять раз продолжительностью ограничения кода. Значением по умолчанию является 34.

TerminationMethod

Метод завершения закодированного кадра

Задайте TerminationMethod как один из Continuous | Truncated | Terminated. Значением по умолчанию является Continuous. В режиме Continuous объект сохраняет свою метрику внутреннего состояния в конце каждого кадра для использования со следующим кадром. Объект обрабатывает каждый traceback путь независимо. Выберите режим Continuous, когда входной сигнал будет содержать только один символ. В режиме Truncated объект обрабатывает каждый кадр независимо. traceback путь запускается в состоянии с лучшей метрики и всегда заканчивается во все-нулевом состоянии. В режиме Terminated объект обрабатывает каждый кадр независимо, и traceback путь всегда запускается и заканчивается во все-нулевом состоянии.

ResetInputPort

Включите вход сброса декодера

Установите это свойство на истину включать дополнительный вход метода шага. Когда вход сброса является ненулевым значением, объект сбрасывает внутренние состояния декодера к начальным условиям. Это свойство применяется, когда вы устанавливаете свойство TerminationMethod на Continuous. Значение по умолчанию является ложным.

DelayedResetAction

Задержите выходной сброс

Задержка выходного сброса не поддержана. Единственная допустимая установка является ложной.

PuncturePatternSource

Источник шаблона прокола

Задайте источник шаблона прокола как один из None | Property. Значением по умолчанию является None. Когда вы устанавливаете это свойство на None, объект не принимает прокалывания. Установите это свойство на Property декодировать проколотые кодовые комбинации на основе вектора шаблона прокола, заданного через свойство PuncturePattern.

PuncturePattern

Проколите вектор шаблона

Укажите, что шаблон прокола раньше прокалывал закодированные данные. Значением по умолчанию является [1; 1; 0; 1; 0; 1]. Шаблон прокола является вектор-столбцом единиц и нулей, где нули указывают, где вставить фиктивные биты. Шаблон прокола должен совпадать с шаблоном прокола, используемым энкодером. Это свойство применяется, когда вы устанавливаете свойство PuncturePatternSource на Property.

ErasuresInputPort

Включите вход стираний

Стирания не поддержаны. Единственная допустимая установка является ложной.

OutputDataType

Тип данных вывода

Единственной допустимой установкой является Full precision, который заставляет тип выходных данных совпадать с типом входных данных.

NumFrames

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

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

Методы

информацияОтобразите информацию об основанном на графическом процессоре объекте Viterbi Decoder
сбросСбросьте состояния основанного на графическом процессоре объекта модулятора Декодера Витерби
шагДекодируйте convolutionally закодированное использование данных алгоритм Viterbi
Характерный для всех системных объектов
release

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

Примеры

Передайте модулируемый поток битов convolutionally закодированных 8 DPSK через канал AWGN. Затем демодулируйте, декодируйте использование Декодера Витерби и ошибок количества.

hConEnc = comm.ConvolutionalEncoder;
hMod = comm.DPSKModulator('BitInput',true);
hChan = comm.gpu.AWGNChannel('NoiseMethod', ...
            'Signal to noise ratio (SNR)', 'SNR',10);
hDemod = comm.DPSKDemodulator('BitOutput',true);                                  
hDec = comm.gpu.ViterbiDecoder('InputFormat','Hard');
% Delay in bits is TracebackDepth times the number of
% bits per symbol
   delay = hDec.TracebackDepth*...
              log2(hDec.TrellisStructure.numInputSymbols);
hError = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay',delay);
    for counter = 1:20
      data = randi([0 1],30,1);
      encodedData = step(hConEnc, data);
      modSignal = step(hMod, encodedData);
      receivedSignal = step(hChan, modSignal);
      demodSignal = step(hDemod, receivedSignal);
      receivedBits = step(hDec, demodSignal);
      errorStats = step(hError, data, receivedBits);
    end
 fprintf('Error rate = %f\nNumber of errors = %d\n', ...
 errorStats(1), errorStats(2))

Ссылки

[1] Fettweis, G., Х. Меир. "Архитектура Feedforward для параллельного декодирования Viterbi”, журнал обработки сигналов VLSI, издания 3, июнь 1991.

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

Смотрите также

Представленный в R2012a