коммуникация. 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 mModulationOrder1), сопоставляет с комплексным числом exp (j×PhaseOffset + j×2×π×m/ModulationOrder). Когда вы устанавливаете это свойство на Custom, объект использует сигнальное созвездие, заданное в свойстве CustomSymbolMapping.

CustomSymbolMapping

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

Задайте пользовательский вектор отображения символа совокупности. Значением по умолчанию является 0:7. Это свойство требует строки или вектор-столбца с размером ModulationOrder. Этот вектор должен иметь уникальные целочисленные значения в области значений [0, ModulationOrder1]. Значения должны иметь тип данных 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

Для просмотра документации необходимо авторизоваться на сайте