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