comm.gpu. PSKDemodulator

Демодулируйте использующий 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).

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

  1. Задайте и настройте свой объект демодулятора PSK. Смотрите Конструкцию.

  2. Вызовите 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 являются аргументами только для значения. Чтобы задать аргумент только для значения, необходимо также задать все предыдущие аргументы только для значения. Можно задать аргументы пары "имя-значение" в любом порядке.

Свойства

ModulationOrder

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

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

PhaseOffset

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

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

BitOutput

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

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

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

DecisionMethod

Метод решения демодуляции

Задайте метод решения, который объект использует в качестве одного из Hard decision | Log-likelihood ratio | Approximate log-likelihood ratio. Значением по умолчанию является Hard decision. Когда вы устанавливаете DecisionMethod на ложь, объект всегда выполняет демодуляцию трудного решения. Это свойство применяется, когда вы устанавливаете свойство BitOutput на истину.

VarianceSource

Источник шумового отклонения

Задайте источник шумового отклонения как один из Property | Input port. Значением по умолчанию является Property. Это свойство применяется, когда вы устанавливаете свойство BitOutput на true и свойство DecisionMethod к Log-likelihood ratio или Approximate log-likelihood ratio.

Variance

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

OutputDataType

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

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

Методы

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

Позвольте изменения значения свойства Системного объекта

Алгоритм

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

Примеры

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

Модуляция с 16 PSK и демодуляция

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

Создайте модулятор 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