Демодуляция методом M-ary PSK с GPU
GPU PSKDemodulator объект демодулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-PSK).
Примечание
Для использования этого объекта необходимо установить лицензию Parallel Computing Toolbox™ и получить доступ к соответствующему графическому процессору. Дополнительные сведения о графических процессорах см. в разделе Вычисления графических процессоров (панель инструментов параллельных вычислений).
Системный object™ на базе графического процессора принимает типичные массивы или объекты MATLAB ®, созданные с помощью gpuArray класс. Системный объект на основе GPU поддерживает входные сигналы с типами данных с двойной или одинарной точностью. Выходной сигнал наследует тип данных из входного сигнала.
Если входной сигнал представляет собой матрицу MATLAB, объект System обрабатывает передачу данных между CPU и GPU. Выходной сигнал представляет собой матрицу MATLAB.
Если входной сигнал является gpuArrayданные остаются на GPU. Выходной сигнал представляет собой gpuArray. Когда объекту присваивается значение gpuArrayвычисления выполняются полностью на GPU, и передача данных не происходит. Прохождение gpuArray аргументы обеспечивают повышение производительности за счет сокращения времени моделирования. Дополнительные сведения см. в разделе Создание массивов на графическом процессоре (панель инструментов параллельных вычислений).
Для демодуляции сигнала, модулированного с помощью фазовой манипуляции:
Определите и настройте объект демодулятора PSK. См. раздел Строительство.
Звонить step демодулировать сигнал в соответствии со свойствами comm.gpu.PSKDemodulator. Поведение step относится к каждому объекту на панели инструментов.
Примечание
Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.
H = comm.gpu.PSKDemodulator возвращает объект системы демодулятора на основе GPU, H. Этот объект демодулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-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, со свойством ReadingOrder, равным M, свойство PhaseOffset имеет значение PHASE и других указанных имен свойств, для которых заданы указанные значения. M и PHASE являются аргументами, предназначенными только для значений. Чтобы задать аргумент только для значения, необходимо также указать все предшествующие аргументы только для значения. Можно указать аргументы пары имя-значение в любом порядке.
|
Количество точек в созвездии сигналов Укажите количество точек в созвездии сигнала в виде положительного, целого скаляра. Значение по умолчанию: |
|
Фаза нулевой точки созвездия Задайте фазовое смещение нулевой точки созвездия в радианах как действительный скаляр. Значение по умолчанию - δ/8. |
|
Выходные данные в виде битов Укажите, состоит ли вывод из групп битов или целых значений символов. Если для этого свойства задано значение true, метод step выводит вектор столбца битовых значений длиной, равной log2 (порядковый номер), умноженной на число демодулированных символов. Если для этого свойства задано значение false, метод step выводит вектор столбца длиной, равной вектору входных данных, который содержит целочисленные значения символов между |
|
Кодировка созвездия Определите, как объект наносит на карту целое число или группу log2 (ModulationOrder) биты к соответствующему символу как |
|
Пользовательская кодировка созвездий Укажите пользовательский вектор отображения символа созвездия. Значение по умолчанию: |
|
Метод принятия решения о демодуляции Укажите метод решения, используемый объектом в качестве одного из |
|
Источник дисперсии шума Укажите источник дисперсии шума как один из |
|
Задайте дисперсию шума как положительный, действительный скаляр. Значение по умолчанию: |
|
Тип данных вывода При установке для этого свойства значения |
| созвездие | Вычислите или постройте график идеальной комбинации сигналов |
| шаг | Демодуляция методом M-ary PSK |
| Общие для всех системных объектов | |
|---|---|
release | Разрешить изменение значения свойства объекта системы |
GPU PSK Demodulator Системный объект использует тот же алгоритм, что и comm.PSKDemodulator Системный объект. Дополнительные сведения см. в разделе Алгоритм декодирования.
Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN. Затем выполните демодуляцию, декодирование и подсчет ошибок.
Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN.
Создание объекта системы модулятора PSK на основе 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 на основе 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);
Выполните моделирование с помощью пошагового метода для обработки данных.
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