comm.gpu.PSKDemodulator

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

Описание

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

Примечание

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

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

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

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

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

  1. Определите и настройте объект демодулятора PSK. См. «Конструкция».

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

Примечание

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

Конструкция

H = comm.gpu.PSKDemodulator возвращает демодулятор на базе графического процессора Системного объекта, H. Этот объект демодулирует входной сигнал с помощью метода M-арного фазы сдвига keing (M-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, с помощью набора свойств ModulationOrder, чтобы M, PhaseOffset набора свойств на PHASE и другие заданные имена свойства, установленные на заданные значения. M и PHASE являются аргументами только для значений. Чтобы задать аргумент только для значения, необходимо также задать все предыдущие аргументы только для значения. Вы можете задать аргументы пары "имя-значение" в любом порядке.

Свойства

ModulationOrder

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

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

PhaseOffset

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

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

BitOutput

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

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

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]. Значения должны иметь тип данных double. Первый элемент этого вектора соответствует точке созвездия под углом 0 + PhaseOffset, с последующими элементами, идущими против часовой стрелки. Последний элемент соответствует точке созвездия под углом -2π/ModulationOrder + PhaseOffset. Это свойство применяется, когда вы устанавливаете SymbolMapping свойство для пользовательского.

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

OutputDataType

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

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

Методы

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

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

Алгоритм

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

Примеры

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

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

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

Создайте объект PSK Modulator System на базе 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 Demodulator System на базе 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);

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

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))

Графический процессор GPU PSK

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