comm.gpu.ConvolutionalEncoder

Сверточное кодирование двоичных данных с GPU

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

Описание

comm.gpu.ConvolutionalEncoder Система object™ convolutionally кодирует последовательность векторов двоичного входа, чтобы произвести последовательность векторов двоичного выхода при помощи графического процессора (GPU).

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

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

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

convolutionally кодировать двоичное сообщение:

  1. Создайте comm.gpu.ConvolutionalEncoder объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

gpuConvEncoder = comm.gpu.ConvolutionalEncoder создает основанный на графическом процессоре сверточный Системный объект энкодера.

gpuConvEncoder = comm.gpu.ConvolutionalEncoder(trellis) устанавливает TrellisStructure свойство к trellis.

gpuConvEncoder = comm.gpu.ConvolutionalEncoder(___,Name,Value) Свойства наборов с помощью одних или нескольких аргументов name-value в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, 'TerminationMethod','Continuous' задает метод завершения как непрерывный, чтобы сохранить состояния энкодера в конце каждого входного вектора для использования со следующим входным вектором.

Свойства

развернуть все

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Структура решетки сверточного кода в виде структуры, которая содержит описание решетки для уровня K ∕ код N. K является количеством входных потоков битов, и N является количеством выходных потоков битов.

Можно или использовать poly2trellis функция, чтобы создать структуру решетки или создать его вручную. Для больше об этой структуре, см. Описание Решетки Сверточного кода и istrellis функция.

Структура решетки содержит эти поля.

Количество входа символов к энкодеру в виде целого числа равняется 2K, где K является количеством входных потоков битов.

Типы данных: double

Количество символов выход от энкодера в виде целого числа равняется 2N, где N является количеством выходных потоков битов.

Типы данных: double

Количество состояний в энкодере в виде степени 2.

Типы данных: double

Следующие состояния для всех комбинаций текущих состояний и текущих входных параметров в виде матрицы целых чисел. Матричным размером должен быть numStates- 2K.

Типы данных: double

Выходные параметры для всех комбинаций текущих состояний и текущих входных параметров в виде матрицы восьмеричных чисел. Матричным размером должен быть numStates- 2K.

Типы данных: double

Типы данных: struct

Метод завершения закодированной системы координат в виде одного из этих значений.

  • 'Continuous' — Системный объект сохраняет состояния энкодера в конце каждого входного вектора для использования со следующим входным вектором.

  • 'Truncated' — Системный объект обрабатывает каждый входной вектор независимо. Состояния энкодера сбрасываются в начале каждого входного вектора. Если вы устанавливаете InitialStateInputPort свойство к 0 ложь), объект сбрасывает свои состояния ко все-нулевому состоянию. Если вы устанавливаете InitialStateInputPort свойство к 1 TRUE), объект сбрасывает свои состояния к значениям, которые вы задаете в InitialStateInputPort входной параметр.

  • 'Terminated' — Системный объект обрабатывает каждый входной вектор независимо. Для каждого входного вектора объект использует дополнительные биты, чтобы установить состояния энкодера на все-нулевые состояния в конце вектора. Для уровня K/N код, объектные выходные параметры вектор из длины (N ✕ (L + S))/K. В этом вычислении, S = constraintLength – 1 (или, в случае нескольких продолжительностей ограничения, S = sum(constraintLength (i) – 1). L является длиной входа. constraintLength – 1 задан как log2 (NumStates).

Типы данных: char | string

Опция, чтобы включить вход сброса энкодера в виде числового или логического 0 ложь). Единственной допустимой установкой является false.

Типы данных: логический | numeric

Опция, чтобы задержать выходной сброс в виде числового или логического 0 ложь). Единственной допустимой установкой является false.

Типы данных: логический | numeric

Опция, чтобы включить вход начального состояния в виде числового или логического 0 ложь). Единственной допустимой установкой является false.

Типы данных: логический | numeric

Опция, чтобы включить конечному состоянию выход в виде числового или логического 0 ложь). Единственной допустимой установкой является false.

Типы данных: логический | numeric

Источник шаблона прокола в виде одного из этих значений.

  • 'None' — Объект не применяет прокалывание.

  • 'Property' — Объект прокалывает код. Это прокалывание основано на векторе шаблона прокола, который вы задаете для PuncturePattern свойство.

Зависимости

Чтобы включить это свойство, установите TerminationMethod свойство к 'Continuous' или 'Truncated'.

Типы данных: char | string

Проколите вектор шаблона, чтобы проколоть закодированные данные в виде вектор-столбца. Вектор должен содержать 1s и 0s, где 0 указывает на положение проколотых битов или исключенных битов.

Зависимости

Чтобы включить это свойство, установите TerminationMethod свойство к 'Continuous' или 'Truncated' и PuncturePatternSource свойство к 'Property'.

Типы данных: double

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

Объектные сегменты входной вектор в NumFrames сегменты и кодируют их независимо. Выход содержит NumFrames закодированные сегменты.

Зависимости

Чтобы включить это свойство, установите TerminationMethod свойство к 'Truncated' или 'Terminated'.

Типы данных: double

Использование

Описание

пример

codeword = gpuConvEncoder(message) convolutionally кодирует входной сигнал, заданный структурой решетки при помощи графического процессора на вашем компьютере. Если никакой графический процессор не доступен, сверточная обработка кодирования выполняется в центральном процессоре (CPU). Для больше о графических процессорах, смотрите, что графический процессор Вычисляет (Parallel Computing Toolbox). Выход является закодированной кодовой комбинацией.

Входные параметры

развернуть все

Входной сигнал в виде вектор-столбца с бинарным знаком.

Типы данных: double | single | logical

Выходные аргументы

развернуть все

Convolutionally закодировал сообщение, возвращенное как вектор-столбец с бинарным знаком. Этот выходной вектор имеет совпадающий тип данных и ориентацию как вход message.

Когда сверточный энкодер представляет уровень K/N код, длина входного вектора равняется K ×L для некоторого положительного целочисленного L. Объект устанавливает длину этого выходного вектора к L ×N.

Типы данных: double | single | logical

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Создайте основанный на графическом процессоре сверточный Системный объект энкодера.

conEnc = comm.gpu.ConvolutionalEncoder;

Создайте основанный на графическом процессоре Системный объект модулятора манипулирования сдвига фазы (PSK), который принимает немного входного сигнала.

modPSK = comm.gpu.PSKModulator('BitInput',true);

Создайте основанный на графическом процессоре Системный объект канала аддитивного белого Гауссова шума (AWGN) с отношением сигнал-шум семь.

chan = comm.gpu.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)','SNR',7);

Создайте основанный на графическом процессоре Системный объект демодулятора PSK, который выводит вектор-столбец битных значений.

demodPSK = comm.gpu.PSKDemodulator('BitOutput',true);

Создайте основанный на графическом процессоре Системный объект Декодера Витерби, который принимает входной вектор значений трудного решения, которые являются нулями или единицами.

vDec = comm.gpu.ViterbiDecoder('InputFormat','Hard');

Создайте Системный объект коэффициента ошибок, который игнорирует 3 выборки данных перед сравнениями созданий. Принятые данные отстают от передаваемых данных 34 выборками.

error = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay',34);

Запустите симуляцию при помощи этого цикла for, чтобы обработать данные.

for counter = 1:20
    data = randi([0 1],30,1);
    encodedData = conEnc(gpuArray(data));
    modSignal = modPSK(encodedData);
    receivedSignal = chan(modSignal);
    demodSignal = demodPSK(receivedSignal);
    receivedBits = vDec(demodSignal);
    errors = error(data,gather(receivedBits));
end

Отобразите количество ошибок.

errors(2)
ans = 1

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

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

Функции

Объекты

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