comm.CPMModulator

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

Описание

The 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 битовыми словами -length, где P = log2 (ModulationOrder). Входные данные должны иметь двойную точность или логический тип данных. Объект сопоставляет каждое битовое слово с целым числом K между 0 и ModulationOrder-1, с использованием отображения, заданного в SymbolMapping свойство. Затем объект преобразует целое число K в промежуточное значение 2 K - (ModulationOrder-1) и выполняется как в случае, когда BitInput имеет значение false.

SymbolMapping

Кодировка символов

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

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

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

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

ModulationIndex

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

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

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

Когда h i изменяется от интервала к интервалу, объект работает в несколько часов. Когда объект работает в 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 метода
Общий для всех системных объектов
release

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

reset

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

Примеры

свернуть все

% 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)

Figure Eye Diagram contains 2 axes. Axes 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes 2 with title Eye Diagram for Quadrature Signal contains an object of type line. This object represents Quadrature.

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

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

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на CPM Modulator Baseband блочных страниц с описанием. Свойства объекта соответствуют параметрам блоков. Для КАРТЫ В МИНУТУ сдвиг фазы за символ - π × <reservedrangesplaceholder1>, где h - индекс модуляции.

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

.
Введенный в R2012a