comm.gpu.ViterbiDecoder

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

Описание

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

Примечание

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

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

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

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

Чтобы декодировать входные символы и создать двоичные выходные символы:

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

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

Примечание

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

Конструкция

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

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

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

Свойства

TrellisStructure

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

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

InputFormat

Вход

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

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

SoftInputWordLength

Функции мягкого входа размера слова

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

InvalidQuantizedInputAction

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

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

TracebackDepth

Глубина следа

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

TerminationMethod

Метод завершения кодированной системы координат

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

ResetInputPort

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

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

DelayedResetAction

Задержка выходного сброса

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

PuncturePatternSource

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

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

PuncturePattern

Вектор пунктирного шаблона

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

ErasuresInputPort

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

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

OutputDataType

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

Единственная допустимая настройка Full precision что делает тип выходных данных совпадающим с типом входных данных.

NumFrames

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

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

Методы

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

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

reset

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

Примеры

Передайте сверточно закодированный 8-DPSK-modulated битовый поток через канал AWGN. Затем демодулируйте, декодируйте с помощью декодера Viterbi и отсчитывайте ошибки.

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., H. Meyr. «Feedforward Architecture for Parallel Viterbi Decoding», Журнал обработки сигналов VLSI, том 3, июнь 1991 года.

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

См. также

Введенный в R2012a