Демодулируйте использующий 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. |
|
Выходные данные как биты Задайте, состоит ли вывод из групп битов или целочисленных значений символа. Когда вы устанавливаете это свойство на истину, метод шага выводит вектор-столбец битных значений с длиной, равной 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