comm.PSKDemodulator

Демодулируйте использующий M-арный метод PSK

Описание

PSKDemodulator объект демодулирует входной сигнал с помощью M-арного сдвига фазы, включающего (M-PSK) метод.

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

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

  2. Вызовите step демодулировать сигнал согласно свойствам comm.PSKDemodulator. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

H = comm.PSKDemodulator создает Системный объект демодулятора, H. Этот объект демодулирует входной сигнал с помощью M-арного сдвига фазы, включающего (M-PSK) метод.

H = comm.PSKDemodulator(Name,Value) создает объект демодулятора M-PSK, H, с каждым заданным набором свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

H = comm.PSKDemodulator(M,PHASE,Name,Value) создает объект демодулятора M-PSK, H. Этот объект имеет ModulationOrder набор свойств к M, PhaseOffset набор свойств к PHASE, и другой заданный набор свойств к заданным значениям. M и PHASE аргументы только для значения. Чтобы задать аргумент только для значения, необходимо также задать все предыдущие аргументы только для значения. Можно задать аргументы пары "имя-значение" в любом порядке.

Свойства

ModulationOrder

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

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

PhaseOffset

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

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

BitOutput

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

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

SymbolMapping

Кодирование созвездия

Задайте, как объект сопоставляет целое число или группу log2 (ModulationOrder) биты к соответствующему символу. Выберите из Binary | Gray | Custom. Значением по умолчанию является Gray. Когда вы устанавливаете это свойство на Gray, объект использует серо-закодированное сигнальное созвездие. Когда вы устанавливаете это свойство на Binary, целочисленный m, между 0 mModulationOrder–1) карты к комплексному числу exp (j×PhaseOffset + j×2×π×m/ModulationOrder). Когда вы устанавливаете это свойство на Custom, объект использует сигнальное созвездие, заданное в CustomSymbolMapping свойство.

CustomSymbolMapping

Пользовательское кодирование созвездия

Задайте пользовательский вектор отображения символа созвездия. Значением по умолчанию является 0:7. Это свойство требует строки или вектор-столбца с размером ModulationOrder. Этот вектор должен иметь уникальные целочисленные значения в области значений [0, ModulationOrder–1]. Значения должны иметь тип данных double. Первый элемент этого вектора соответствует точке созвездия под углом 0 + PhaseOffset, с последующими элементами, запускающимися против часовой стрелки. Последний элемент соответствует точке созвездия под углом –π/ModulationOrder + PhaseOffset. Это свойство применяется, когда вы устанавливаете SymbolMapping свойство к Custom.

DecisionMethod

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

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

VarianceSource

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

Задайте источник шумового отклонения как один из Property | Input port. Значением по умолчанию является Property. Это свойство применяется, когда вы устанавливаете BitOutput свойство к истине и 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 | Smallest unsigned integer | double | single | int8 | uint8 | int16 | uint16 | int32 | uint32. Значением по умолчанию является Full precision. Это свойство применяется, когда вы устанавливаете BitOutput свойство к false. Это также применяется, когда вы устанавливаете BitOutput свойство к true и DecisionMethod свойство к Hard decision. В этом втором случае, когда OutputDataType свойство установлено в Full precision, тип входных данных является одним - или с двойной точностью, выходные данные имеет совпадающий тип данных как вход.. Когда входные данные имеют фиксированную точку, тип выходных данных ведет себя, как будто вы установили OutputDataType свойство к Smallest unsigned integer.

Когда вы устанавливаете BitOutput к true и DecisionMethod свойство к Hard Decision, затем logical тип данных становится допустимой опцией. Если вы устанавливаете BitOutput свойство к true и DecisionMethod свойство к Log-likelihood ratio или Approximate log-likelihood ratio, выходные данные имеют совпадающий тип данных как вход. В этом случае тип данных должен быть одним - или с двойной точностью.

 Свойства фиксированной точки

Методы

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

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

Примеры

развернуть все

Создайте модулятор с 16 PSK и Систему демодулятора objects™, в котором используется пользовательское отображение символа. Оцените, что BER в AWGN образовывает канал и сравнивает производительность с той из теоретической серо-закодированной системы PSK.

Создайте пользовательское отображение символа для схемы модуляции с 16 PSK. 16 целочисленных символов должны иметь значения, которые падают между 0 и 15.

custMap = [0 2 4 6 8 10 12 14 15 13 11 9 7 5 3 1];

Создайте модулятор с 16 PSK и пару демодулятора, задающую пользовательский символ, сопоставляющий массивом, custMap.

pskModulator = comm.PSKModulator(16,'BitInput',true, ...
    'SymbolMapping','Custom', ...
    'CustomSymbolMapping',custMap);
pskDemodulator = comm.PSKDemodulator(16,'BitOutput',true, ...
    'SymbolMapping','Custom', ...
    'CustomSymbolMapping',custMap);

Отобразите созвездие модулятора.

constellation(pskModulator)

Создайте Системный объект канала AWGN для использования с 16-ary данными.

awgnChannel = comm.AWGNChannel('BitsPerSymbol',log2(16));

Создайте объект коэффициента ошибок отследить статистику BER.

errorRate = comm.ErrorRate;

Инициализируйте векторы симуляции. Eb/No варьируется от 6 до 18 дБ на шагах на 1 дБ.

ebnoVec = 6:18;
ber = zeros(size(ebnoVec));

Оцените BER путем модуляции двоичных данных, передачи его через канал AWGN, демодуляции полученного сигнала и собирания ошибочных статистических данных.

for k = 1:length(ebnoVec)
    
    % Reset the error counter for each Eb/No value
    reset(errorRate)
    % Reset the array used to collect the error statistics
    errVec = [0 0 0];
    % Set the channel Eb/No
    awgnChannel.EbNo = ebnoVec(k);
    
    while errVec(2) < 200 && errVec(3) < 1e7
        % Generate a 1000-symbol frame
        data = randi([0 1],4000,1);
        % Modulate the binary data
        modData = pskModulator(data);
        % Pass the modulated data through the AWGN channel
        rxSig = awgnChannel(modData);
        % Demodulate the received signal
        rxData = pskDemodulator(rxSig);
        % Collect the error statistics
        errVec = errorRate(data,rxData);
    end
    
    % Save the BER data
    ber(k) = errVec(1);
end

Сгенерируйте теоретические данные о BER для канала AWGN с помощью berawgn.

berTheory = berawgn(ebnoVec,'psk',16,'nondiff');

Постройте симулированные и теоретические результаты. Поскольку симулированные результаты используют модуляцию с 16 PSK, которая не использует Коды Грея, производительность не так хороша как предсказанный теорией.

figure
semilogy(ebnoVec,[ber; berTheory])
xlabel('Eb/No (dB)')
ylabel('BER')
grid
legend('Simulation','Theory','location','ne')

Алгоритмы

развернуть все

Расширенные возможности

Смотрите также

|

Представленный в R2012a