comm.gpu.ViterbiDecoder

Декодируйте сверточно закодированные данные с использованием алгоритма 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

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

Установите это свойство на true, чтобы включить дополнительный вход метода шага. Когда вход сброса является ненулевым значением, объект сбрасывает внутренние состояния декодера к начальным условиям. Это свойство применяется, когда вы устанавливаете свойство 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