exponenta event banner

comm.gpu. PSKDemodulator

Демодуляция методом M-ary PSK с GPU

Описание

GPU PSKDemodulator объект демодулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-PSK).

Примечание

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

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

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

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

Для демодуляции сигнала, модулированного с помощью фазовой манипуляции:

  1. Определите и настройте объект демодулятора PSK. См. раздел Строительство.

  2. Звонить step демодулировать сигнал в соответствии со свойствами comm.gpu.PSKDemodulator. Поведение step относится к каждому объекту на панели инструментов.

Примечание

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

Строительство

H = comm.gpu.PSKDemodulator возвращает объект системы демодулятора на основе GPU, H. Этот объект демодулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-PSK).

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

H = comm.gpu.PSKDemodulator(M,PHASE,Name,Value) создает объект демодулятора M-PSK на основе GPU, H, со свойством ReadingOrder, равным M, свойство PhaseOffset имеет значение PHASE и других указанных имен свойств, для которых заданы указанные значения. M и PHASE являются аргументами, предназначенными только для значений. Чтобы задать аргумент только для значения, необходимо также указать все предшествующие аргументы только для значения. Можно указать аргументы пары имя-значение в любом порядке.

Свойства

ModulationOrder

Количество точек в созвездии сигналов

Укажите количество точек в созвездии сигнала в виде положительного, целого скаляра. Значение по умолчанию: 8.

PhaseOffset

Фаза нулевой точки созвездия

Задайте фазовое смещение нулевой точки созвездия в радианах как действительный скаляр. Значение по умолчанию - δ/8.

BitOutput

Выходные данные в виде битов

Укажите, состоит ли вывод из групп битов или целых значений символов. Если для этого свойства задано значение true, метод step выводит вектор столбца битовых значений длиной, равной log2 (порядковый номер), умноженной на число демодулированных символов. Если для этого свойства задано значение false, метод step выводит вектор столбца длиной, равной вектору входных данных, который содержит целочисленные значения символов между0 и ModulationOrder-1. Значение по умолчанию - false.

SymbolMapping

Кодировка созвездия

Определите, как объект наносит на карту целое число или группу log2 (ModulationOrder) биты к соответствующему символу какBinary | Gray | Custom. Значение по умолчанию: Gray. При установке для этого свойства значения Grayобъект использует кодированную Греем сигнальную группировку. При установке для этого свойства значения Binaryцелое число m (0 ≤ m ≤ModulationOrder-1) соответствует комплексному значению. Это значение представлено как exp (j * Смещение фазы + j * 2 * pi * m/Порядок). При установке для этого свойства значенияCustomобъект использует сигнальную совокупность, определенную в свойстве CustomSymbolMapping.

CustomSymbolMapping

Пользовательская кодировка созвездий

Укажите пользовательский вектор отображения символа созвездия. Значение по умолчанию: 0:7. Это свойство должно быть вектором строки или столбца размера «» Порядок «» с уникальными целочисленными значениями в диапазоне [0, Порядок-1]. Значения должны быть двойного типа данных. Первый элемент этого вектора соответствует точке созвездия под углом 0 + PhaseOffset, при этом последующие элементы идут против часовой стрелки. Последний элемент соответствует точке созвездия под углом -2π/ModulationOrder + PhaseOffset. Это свойство применяется при установке SymbolMapping для свойства Custom.

DecisionMethod

Метод принятия решения о демодуляции

Укажите метод решения, используемый объектом в качестве одного из Hard decision | Log-likelihood ratio | Approximate log-likelihood ratio. Значение по умолчанию: Hard decision. При установке DecisionMethod значение false, объект всегда выполняет демодуляцию жесткого решения. Это свойство применяется при установке для свойства BitOutput значения true.

VarianceSource

Источник дисперсии шума

Укажите источник дисперсии шума как один из Property | Input port. Значение по умолчанию: Property. Это свойство применяется при установке для свойства BitOutput значения true и свойство DecisionMethod для Log-likelihood ratio или Approximate log-likelihood ratio.

Variance

Задайте дисперсию шума как положительный, действительный скаляр. Значение по умолчанию: 1. Если это значение очень мало (т.е. SNR очень высокое), то вычисления логарифмического отношения правдоподобия (LLR) могут дать Inf или -Inf. Это происходит потому, что алгоритм LLR вычисляет экспоненциальное значение очень больших или очень малых чисел, используя арифметику конечной точности. В таких случаях рекомендуется использовать приблизительное LLR, поскольку его алгоритм не вычисляет экспоненты. Это свойство применяется, если для свойства BitOutput установлено значение true, а для свойства DecisionMethod - значение Log-likelihood ratio или Approximate log-likelihood ratioи свойство VaritySource для Property. Это свойство можно настроить.

OutputDataType

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

При установке для этого свойства значения Full precisionвыходной сигнал наследует тип данных из входного сигнала.

Методы

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

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

Алгоритм

GPU PSK Demodulator Системный объект использует тот же алгоритм, что и comm.PSKDemodulator Системный объект. Дополнительные сведения см. в разделе Алгоритм декодирования.

Примеры

Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN. Затем выполните демодуляцию, декодирование и подсчет ошибок.

16-PSK Модуляция и демодуляция

Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN.

Создание объекта системы модулятора PSK на основе GPU.

hMod = comm.gpu.PSKModulator(16, 'PhaseOffset',pi/16);

Создайте объект системы каналов AWGN на основе GPU с отношением сигнал/шум 15.

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

Создание объекта системы демодулятора PSK на основе GPU.

 hDemod = comm.gpu.PSKDemodulator(16, 'PhaseOffset',pi/16);

Создайте системный объект калькулятора частоты ошибок.

hError = comm.ErrorRate;

Передача кадра данных, содержащего 50 символов.

for counter = 1:100
data = gpuArray.randi([0 hMod.ModulationOrder-1], 50, 1);

Выполните моделирование с помощью пошагового метода для обработки данных.

modSignal = step(hMod, data);
noisySignal = step(hAWGN, modSignal);
receivedData = step(hDemod, noisySignal);
errorStats = step(hError, gather(data), gather(receivedData));
end

Вычислите результаты частоты ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n',...
    errorStats(1), errorStats(2))

Демодулятор PSK GPU

Создание пары модулятора GPU PSK и демодулятора.

gpuMod = comm.gpu.PSKModulator;
gpuDemod = comm.gpu.PSKDemodulator;

Создание случайных символов данных. Модулировать данные.

txData = randi([0 7],1000,1);
txSig = gpuMod(txData);

Передача сигнала по каналу AWGN.

rxSig = awgn(txSig,20);

Демодулируйте принятый сигнал.

rxData = gpuDemod(rxSig);

Определите количество ошибок символов.

numSymErrors = symerr(txData,rxData)
numSymErrors =

   736

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

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