Демодулируйте использующий 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).
Чтобы демодулировать сигнал, который модулировался с помощью манипулирования сдвига фазы:
Задайте и настройте свой объект демодулятора PSK. Смотрите Конструкцию.
Вызовите 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
аргументы только для значения. Чтобы задать аргумент только для значения, необходимо также задать все предыдущие аргументы только для значения. Можно задать аргументы пары "имя-значение" в любом порядке.
|
Число точек в сигнальном созвездии Задайте число точек в сигнальном созвездии как положительное, целочисленный скаляр. Значением по умолчанию является |
|
Фаза нулевой точки созвездия Задайте смещение фазы нулевой точки созвездия, в радианах, как действительный скаляр. Значением по умолчанию является π/8. |
|
Выходные данные как биты Задайте, состоит ли выход из групп битов или целочисленных значений символа. Когда вы устанавливаете это свойство на true, метод шага выводит вектор-столбец битных значений с длиной, равной log2 (ModulationOrder) времена количество демодулируемых символов. Когда вы устанавливаете это свойство на ложь, метод шага выводит вектор-столбец с длиной, равной вектору входных данных, который содержит целочисленные значения символа между |
|
Кодирование созвездия Задайте, как объект сопоставляет целое число или группу log2 (ModulationOrder) биты к соответствующему символу как |
|
Пользовательское кодирование созвездия Задайте пользовательский вектор отображения символа созвездия. Значением по умолчанию является |
|
Метод решения демодуляции Задайте метод решения, который объект использует в качестве одного из |
|
Источник шумового отклонения Задайте источник шумового отклонения как один из |
|
Задайте отклонение шума как положительный, действительный скаляр. Значением по умолчанию является |
|
Тип данных выхода Когда вы устанавливаете это свойство на |
созвездие | Вычислите или постройте идеальное сигнальное созвездие |
шаг | Демодулируйте использующий M-арный метод PSK |
Характерный для всех системных объектов | |
---|---|
release | Позвольте изменения значения свойства Системного объекта |
GPU PSK Demodulator
Системный объект использует тот же алгоритм в качестве comm.PSKDemodulator
Системный объект. См. Алгоритм Декодирования для деталей.
Передайте LDPC-закодированный, модулируемый QPSK поток битов через канал AWGN. Затем демодулируйте, декодируйте, и ошибки количества.
Передайте 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 графического процессора и пару демодулятора.
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