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

Модулируйте метод CPM использования

Описание

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

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

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

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

Примечание

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

Конструкция

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

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

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

Свойства

ModulationOrder

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

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

BitInput

Примите битные входные параметры

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

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

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

SymbolMapping

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

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

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

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

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

ModulationIndex

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

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

где H-1 представляет длину вектор-столбца. Сдвиг фазы по символу является π × h.

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

FrequencyPulse

Форма импульса частоты

Задайте тип импульса, формирующего что использование модулятора, чтобы сглаживать переходы фазы модулируемого сигнала. Выберите из Rectangular | Raised Cosine | Spectral Raised Cosine | Gaussian | Tamed FM. Значением по умолчанию является Rectangular.

MainLobeDuration

Основная длительность лепестка спектрального повышенного импульса косинуса

Задайте, в количестве интервалов символа, длительности самого большого лепестка спектрального повышенного импульса косинуса. Значением по умолчанию является 1. Это свойство требует действительного, положительного, целочисленного скаляра. Это свойство применяется, когда вы устанавливаете свойство FrequencyPulse на Spectral Raised Cosine.

RolloffFactor

Фактор спада спектрального повышенного импульса косинуса

Задайте фактор спада спектрального повышенного импульса косинуса. Значением по умолчанию является 0.2. Это свойство требует действительного скаляра между 0 и 1. Это свойство применяется, когда вы устанавливаете свойство FrequencyPulse на Spectral Raised Cosine.

BandwidthTimeProduct

Продукт пропускной способности и время символа Гауссова импульса

Задайте продукт пропускной способности и время символа для Гауссовой импульсной формы. Значением по умолчанию является 0.3. Это свойство требует действительного, положительной скалярной величины. Это свойство применяется, когда вы устанавливаете свойство FrequencyPulse на Gaussian.

PulseLength

Импульсная длина

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

SymbolPrehistory

Предыстория символа

Задайте символы данных, используемые модулятором до первого вызова метода step в противоположном хронологическом порядке. Значением по умолчанию является 1. Это свойство требует скаляра или вектора с нечетными целочисленными элементами между – (ModulationOrder –1) и (ModulationOrder –1). Если значение является вектором, то его длина должна быть той меньше, чем значение в свойстве PulseLength.

InitialPhaseOffset

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

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

SamplesPerSymbol

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

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

OutputDataType

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

Задайте тип выходных данных как один из double | single. Значением по умолчанию является double.

Методы

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

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

Примеры

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

% Create a CPM modulator, an AWGN channel, and a CPM demodulator.
    hMod = comm.CPMModulator(8, 'BitInput', true, ...
                            'SymbolMapping', 'Gray');
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                            'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.CPMDemodulator(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

Используя comm.CPMModulator и comm.CPMDemodulator Системные объекты применяют модуляцию GFSK и демодуляцию к случайным битным данным.

Создайте модулятор GFSK и пару объекта демодулятора.

gfskMod = comm.CPMModulator('ModulationOrder', 2, 'FrequencyPulse', 'Gaussian', ... 
               'BandwidthTimeProduct', 0.5, 'ModulationIndex', 1, ...
               'BitInput', true);
gfskDemod = comm.CPMDemodulator('ModulationOrder', 2, 'FrequencyPulse', 'Gaussian', ... 
               'BandwidthTimeProduct', 0.5, 'ModulationIndex', 1, ...
               'BitOutput', true);

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

numSym = 100;
x = randi([0 1],numSym*gfskMod.SamplesPerSymbol,1);
y = gfskMod(x);
eyediagram(y,16)

Демодулируйте модулируемые данные GFSK. Чтобы проверить, что демодулируемые данные сигнала равны исходным данным, необходимо объяснить задержку, введенную Гауссовым просачиванием обработки модуляции и демодуляции GFSK.

z = gfskDemod(y);
delay = finddelay(x,z);
isequal(x(1:end-delay),z(delay+1:end))
ans = logical
   1

Алгоритмы

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

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

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