Декодирование сверточно закодированных данных с помощью алгоритма Витерби с помощью графического процессора
GPU ViterbiDecoder Система object™ декодирует входные символы для получения двоичных выходных символов с использованием графического процессора (GPU). Этот объект обрабатывает сигналы переменного размера; однако сигналы переменного размера не могут применяться для входных сигналов стирания.
Примечание
Для использования этого объекта необходимо установить лицензию Parallel Computing Toolbox™ и получить доступ к соответствующему графическому процессору. Дополнительные сведения о графических процессорах см. в разделе Вычисления графических процессоров (панель инструментов параллельных вычислений).
Системный объект на основе графического процессора принимает типичные массивы MATLAB ® или объекты, созданные с помощью gpuArray класс. Системный объект на основе GPU поддерживает входные сигналы с типами данных с двойной или одинарной точностью. Выходной сигнал наследует тип данных из входного сигнала.
Если входной сигнал представляет собой матрицу MATLAB, объект System обрабатывает передачу данных между CPU и GPU. Выходной сигнал представляет собой матрицу MATLAB.
Если входной сигнал является gpuArrayданные остаются на GPU. Выходной сигнал представляет собой gpuArray. Когда объекту присваивается значение gpuArrayвычисления выполняются полностью на GPU, и передача данных не происходит. Прохождение gpuArray аргументы обеспечивают повышение производительности за счет сокращения времени моделирования. Дополнительные сведения см. в разделе Создание массивов на графическом процессоре (панель инструментов параллельных вычислений).
Для декодирования входных символов и получения двоичных выходных символов:
Определите и настройте объект-декодер Витерби. См. раздел Строительство.
Звонить step для декодирования входных символов в соответствии со свойствами comm.gpu.ViterbiDecoder. Поведение step относится к каждому объекту на панели инструментов.
Примечание
Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.
H = comm.gpu.ViterbiDecoder создает системный объект декодера Витерби, H. Этот объект использует алгоритм Витерби для декодирования сверточно закодированных входных данных.
H = comm.gpu.ViterbiDecoder( создает объект-декодер Витерби, Name,Value)H, с указанным свойством Name, равным указанному значению. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN.
H = comm.gpu.ViterbiDecoder(TRELLIS,Name,Value) создает объект-декодер Витерби, H, с TrellisStructure свойство имеет значение TRELLIS, а другое указанное свойство Names имеет указанное значение Values.
|
Решетчатая структура сверточного кода Укажите решетку как структуру MATLAB, содержащую описание решетки сверточного кода. Используйте |
|
Формат ввода Укажите формат входа в декодер как один из При установке для этого свойства значения |
|
Длина слова мягкого ввода Укажите количество битов, используемых для представления каждого квантованного значения мягкого ввода в виде положительного целочисленного скаляра. Это свойство применяется при установке для свойства InputFormat значения |
|
Действие, когда входные значения выходят за пределы диапазона Единственный допустимый параметр: |
|
Глубина отслеживания Укажите число ветвей решетки, используемых для построения каждого пути отслеживания в виде положительного целого скаляра, меньшего или равного 256. Глубина отслеживания влияет на точность декодирования и задержку. Количество нулевых символов, которые предшествуют первому декодированному символу на выходе, представляют задержку декодирования. При установке для свойства TerminationMethod значения |
|
Метод завершения кодированного кадра Определить |
|
Включить вход сброса декодера Установите для этого свойства значение true, чтобы включить ввод дополнительного метода шага. Когда входной сигнал сброса является ненулевым значением, объект сбрасывает внутренние состояния декодера в исходное состояние. Это свойство применяется при установке для свойства TerminationMethod значения |
|
Сброс выходного сигнала задержки Задержка сброса выходных данных не поддерживается. Единственный допустимый параметр - false. |
|
Источник прокола Укажите источник образца прокола как один из |
|
Вектор прокола Укажите шаблон прокола, используемый для прокола кодированных данных. Значение по умолчанию: |
|
Включить ввод стираний Стирание не поддерживается. Единственный допустимый параметр - false. |
|
Тип данных вывода Единственный допустимый параметр: |
|
Количество независимых кадров, присутствующих в векторах входных и выходных данных. Укажите количество независимых кадров, содержащихся в одном векторе ввода/вывода данных. Входной вектор будет сегментирован на |
| информация | Отображение информации об объекте декодера Витерби на основе графического процессора |
| шаг | Декодировать сверточно закодированные данные с помощью алгоритма Витерби |
Передача сверточно закодированного битового потока 8-DPSK-modulated через канал 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] Феттвейс, Г., Х. Мейр. «Feedforward Architecture for Parallel Viterbi Decoding», журнал обработки сигналов VLSI, том 3, июнь 1991 года.