comm.CPFSKDemodulator

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

Описание

The 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 битовому слову -length, где P = ModulationOrder(ModulationOrder).

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

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

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

ModulationIndex

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

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

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

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

InitialPhaseOffset

Смещение начальной фазы

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

SamplesPerSymbol

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

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

TracebackDepth

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

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

OutputDataType

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

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

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

Методы

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

Разрешить изменение значения свойства системного объекта

reset

Сброс внутренних состояний Системного объекта

Примеры

свернуть все

% 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