comm.PSKDemodulator

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

Описание

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

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

  1. Определите и настройте объект демодулятора PSK. См. «Конструкция».

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

Примечание

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

Конструкция

H = comm.PSKDemodulator создает демодулятор Системного объекта, H. Этот объект демодулирует входной сигнал с помощью метода M-арного фазы сдвига keing (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, (ModulationOrder1)] и сопоставляется с комплексным числом exp (j ⨉ PhaseOffset + <reservedrangesplaceholder1> <reservedrangesplaceholder0>, m/ ModulationOrder). Когда вы устанавливаете это свойство на Customобъект использует сигнальное созвездие, заданное в CustomSymbolMapping свойство.

CustomSymbolMapping

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

Задайте пользовательский вектор отображения символов созвездия. Значение по умолчанию является 0:7. Для этого свойства требуется строка или вектор-столбец с размером ModulationOrder. Этот вектор должен иметь уникальные целочисленные значения в области значений [0, ModulationOrder1]. Значения должны быть типа данных double. Первый элемент этого вектора соответствует точке созвездия под углом 0 + PhaseOffset, с последующими элементами, идущими против часовой стрелки. Последний элемент соответствует точке созвездия под углом - 2,/ 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 свойство true и DecisionMethod свойство к Log-likelihood ratio или Approximate log-likelihood ratio.

Variance

Шумовые отклонения

Задайте отклонение шума как положительное, действительное скалярное значение. Значение по умолчанию является 1. Если это значение очень мало (то есть ОСШ очень высок), расчеты логарифмического отношения логарифмической правдоподобности (LLR) могут привести к получению Inf или -Inf. Этот результат происходит, потому что алгоритм LLR вычисляет экспоненциал очень больших или очень малых чисел с помощью арифметики конечной точности. В таких случаях используйте аппроксимацию LLR, потому что алгоритм для этой опции не вычисляет экспоненциалов. Это свойство применяется, когда вы устанавливаете BitOutput свойство true, 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 модулятор и демодулятор System 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)

Figure contains an axes. The axes with title Constellation: 16-PSK,Custom Mapping,PhaseOffset=0.3927rad contains 19 objects of type line, text.

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

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

Создайте объект частоты ошибок для отслеживания статистики BER.

errorRate = comm.ErrorRate;

Инициализируйте векторы симуляции. Eb/N0 изменяется от 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');

Постройте график моделируемых и теоретических результатов. BER 16-PSK модуляции эффективности моделируемого пользовательского отображения символов не так хорошо, как теоретическая кривая предсказания для кодов Грея.

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Simulation, Theory.

Алгоритмы

расширить все

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

.
Введенный в R2012a