comm.gpu.PSKDemodulator

Демодулируйте использующий M-арный метод PSK с помощью графического процессора

Описание

GPU PSKDemodulator объект демодулирует входной сигнал с помощью M-арного сдвига фазы, включающего (M-PSK) метод.

Примечание

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

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

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

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

Чтобы демодулировать сигнал, который модулировался с помощью манипулирования сдвига фазы:

  1. Задайте и настройте свой объект демодулятора PSK. Смотрите Конструкцию.

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

Примечание

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

Конструкция

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

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

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

Свойства

ModulationOrder

Число точек в сигнальном созвездии

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

PhaseOffset

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

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

BitOutput

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

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

SymbolMapping

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

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

CustomSymbolMapping

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

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

DecisionMethod

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

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

VarianceSource

Источник шумового отклонения

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

Variance

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

OutputDataType

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

Когда вы устанавливаете это свойство на Full precision, выходной сигнал наследовал свой тип данных от входного сигнала.

Методы

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

Позвольте изменения значения свойства Системного объекта

Алгоритм

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

Примеры

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

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

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

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

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

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

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

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

 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 графического процессора

Создайте модулятор 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