Декодируйте convolutionally закодированное использование данных алгоритм Viterbi с графическим процессором
Система GPU ViterbiDecoder
object™ декодирует вводимые символы, чтобы произвести символы двоичного выхода с помощью графического процессора (GPU). Этот объектный переменный размер процессов сигналы; однако, сигналы переменного размера не могут быть применены для входных параметров стирания.
Чтобы использовать этот объект, необходимо установить лицензию Parallel Computing Toolbox™ и иметь доступ к соответствующему графическому процессору. Для больше о графических процессорах, смотрите, что графический процессор Вычисляет (Parallel Computing Toolbox).
Основанный на графическом процессоре Системный объект принимает типичные массивы MATLAB® или возражает, что вы создаете использование gpuArray класса как вход. Основанные на графическом процессоре Системные объекты поддерживают входные сигналы с двойным - или типы данных с одинарной точностью. Выходной сигнал наследовал свой тип данных от входного сигнала.
Если входной сигнал является массивом MATLAB, то выходной сигнал является также массивом MATLAB. В этом случае Системный объект обрабатывает передачу данных между центральным процессором и графическим процессором.
Если входной сигнал является gpuArray, то выходной сигнал является также gpuArray. В этом случае данные остаются на графическом процессоре. Поэтому, когда объекту дают gpuArray, вычисления происходят полностью на графическом процессоре, и никакая передача данных не происходит. Передача gpuArray аргументы обеспечивает увеличенную производительность путем сокращения времени симуляции. Для получения дополнительной информации смотрите, Устанавливают Массивы на графическом процессоре (Parallel Computing Toolbox).
Декодировать вводимые символы и произвести символы двоичного выхода:
Задайте и настройте свой объект Декодера Витерби. Смотрите Конструкцию.
Вызовите 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 и другим заданным набором имен свойства к заданным значениям.
|
Структура решетки сверточного кода Задайте решетку как структуру MATLAB, которая содержит описание решетки сверточного кода. Используйте функцию |
|
'InputFormat' Задайте формат входа к декодеру как один из Когда вы устанавливаете это свойство на |
|
Мягкий входной размер слова Укажите, что количество битов раньше представляло каждое квантованное мягкое входное значение как положительное, целочисленный скаляр. Это свойство применяется, когда вы устанавливаете свойство InputFormat на |
|
Действие, когда входные значения вне области значений Единственной допустимой установкой является |
|
Глубина Traceback Укажите, что количество ответвлений решетки раньше создавало каждый traceback путь как положительное, целочисленный скаляр, меньше чем или равный 256. traceback глубина влияет на точность декодирования и задержку. Количество нулевых символов, которые предшествуют первому декодируемому символу в выводе, представляет задержку декодирования. Когда вы устанавливаете свойство TerminationMethod на |
|
Метод завершения закодированного кадра Задайте |
|
Включите вход сброса декодера Установите это свойство на истину включать дополнительный вход метода шага. Когда вход сброса является ненулевым значением, объект сбрасывает внутренние состояния декодера к начальным условиям. Это свойство применяется, когда вы устанавливаете свойство TerminationMethod на |
|
Задержите выходной сброс Задержка выходного сброса не поддержана. Единственная допустимая установка является ложной. |
|
Источник шаблона прокола Задайте источник шаблона прокола как один из |
|
Проколите вектор шаблона Укажите, что шаблон прокола раньше прокалывал закодированные данные. Значением по умолчанию является |
|
Включите вход стираний Стирания не поддержаны. Единственная допустимая установка является ложной. |
|
Тип данных вывода Единственной допустимой установкой является |
|
Количество независимых кадров, существующих в векторах входных и выходных данных. Задайте количество независимых кадров, содержавшихся в одном вводе данных / выходной вектор. Входной вектор будет сегментироваться на сегменты |
информация | Отобразите информацию об основанном на графическом процессоре объекте 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.