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

Демодулируйте метод CPFSK использования и алгоритм Viterbi

Описание

Объект CPFSKDemodulator демодулирует сигнал, который модулировался с помощью непрерывного метода манипулирования сдвига частоты фазы. Вход представляет собой репрезентацию модулированного сигнала.

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

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

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

Примечание

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

Конструкция

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

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

H = comm.CPFSKDemodulator(M,Name,Value) создает объект демодулятора CPFSK, H. Этот объект имеет набор свойств ModulationOrder к M и другой заданный набор свойств к заданным значениям.

Свойства

ModulationOrder

Размер алфавита символа

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

BitOutput

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

Задайте, состоит ли вывод из групп битов или целочисленных значений. Значением по умолчанию является false.

Когда вы устанавливаете это свойство на false, метод step выводит вектор-столбец длины, равной N/SamplesPerSymbol и с элементами, которые являются целыми числами между – (ModulationOrder –1) и ModulationOrder –1. В этом случае, N, длина входного сигнала, который указывает, что количество входной основной полосы модулировало символы.

Когда вы устанавливаете это свойство на true, метод step выводит вектор столбца двоичных данных длины, равной P×(N/SamplesPerSymbol), где P = log2 (ModulationOrder). Вывод содержит слова бита длины-P. В этом сценарии объект сначала сопоставляет каждый демодулируемый символ с нечетным целочисленным значением, K, между – (ModulationOrder-1) и ModulationOrder –1. Объект затем сопоставляет K с неотрицательным целым числом (K +ModulationOrder–1)/2. Наконец, объект сопоставляет каждое неотрицательное целое число с двоичным словом длины-P, с помощью отображения, заданного в свойстве SymbolMapping.

SymbolMapping

Кодирование символа

Задайте отображение модулируемых символов как один из Binary | Gray. Значением по умолчанию является Binary. Это свойство определяет, как объект сопоставляет каждое демодулируемое целочисленное значение символа (в области значений 0 и ModulationOrder –1) к P - слово бита длины, где P = ModulationOrder (ModulationOrder).

Когда вы устанавливаете это свойство на Binary, объект использует естественное двоично кодированное упорядоченное расположение.

Когда вы устанавливаете это свойство на Gray, объект использует серо-закодированное упорядоченное расположение.

Это свойство применяется, когда вы устанавливаете свойство BitOutput на true.

ModulationIndex

Индекс модуляции

Задайте индекс модуляции. Значением по умолчанию является 0.5. Значение этого свойства может быть скаляром, h или вектор-столбцом, [h0, h1, …. h H-1]

где H-1 представляет длину вектор-столбца.

Когда h i отличается от интервала до интервала, объект действует в multi-h. Когда объект действует в multi-h, h, i должна быть рациональным числом.

InitialPhaseOffset

Начальная фаза смещается

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

SamplesPerSymbol

Количество выборок на вводимый символ

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

TracebackDepth

Глубина Traceback для алгоритма Viterbi

Задайте количество ответвлений решетки что использование алгоритма Viterbi, чтобы создать каждый traceback путь как положительное, целочисленный скаляр. Значением по умолчанию является 16. Значение этого свойства является также значением выходной задержки. То значение является количеством нулевых символов, которые предшествуют первому значимому демодулируемому символу в выводе.

OutputDataType

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

Задайте тип выходных данных как один из int8 | int16 | int32 | double, когда вы установите свойство BitOutput на ложь. Значением по умолчанию является double.

Когда вы устанавливаете свойство BitOutput на true, задаете тип выходных данных как один из logical | double.

Методы

сбросСбросьте состояния объекта демодулятора CPFSK
шагДемодулируйте метод CPFSK использования и алгоритм Viterbi
Характерный для всех системных объектов
release

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

Примеры

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

% Create a CPFSK modulator, an AWGN channel, and a CPFSK demodulator
    hMod = comm.CPFSKModulator(8, 'BitInput', true, ...
                         'SymbolMapping', 'Gray');
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                         'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.CPFSKDemodulator(8, 'BitOutput', true, ...
                         'SymbolMapping', 'Gray');

 % Create an error rate calculator, account for the delay caused by the Viterbi algorithm.
    delay = log2(hDemod.ModulationOrder)*hDemod.TracebackDepth;
    hError = comm.ErrorRate('ReceiveDelay', delay);
    for counter = 1:100
        % Transmit 100 3-bit words
        data = randi([0 1],300,1);
        modSignal = step(hMod, data);
        noisySignal = step(hAWGN, modSignal);
        receivedData = step(hDemod, noisySignal);
        errorStats = step(hError, data, receivedData);
    end

    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.004006
Number of errors = 120

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока CPFSK Demodulator Baseband. Свойства объектов соответствуют параметрам блоков. Для CPFSK сдвиг фазы на символ является π × h, где h является индексом модуляции.

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

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