exponenta event banner

коммуникация. PSKDemodulator

Демодуляция методом M-ary PSK

Описание

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

Для демодуляции сигнала, модулированного с помощью фазовой манипуляции:

  1. Определите и настройте объект демодулятора PSK. См. раздел Строительство.

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

Примечание

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

Строительство

H = comm.PSKDemodulator создает объект системы демодулятора, H. Этот объект демодулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-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 + j2¼ м/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. Если это значение очень мало (т.е. SNR очень высокое), вычисления логарифмического отношения правдоподобия (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-ary 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