comm.GMSKModulator

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

Описание

The GMSKModulator объект модулирует с помощью Гауссова метода минимальной манипуляции сдвигом. Выход является представлением модулированного сигнала в основной полосе частот.

Чтобы модулировать сигнал с использованием Гауссовой минимальной манипуляции сдвигом:

  1. Определите и настройте объект модулятора GMSK. См. «Конструкция».

  2. Функции step модулировать сигнал в соответствии со свойствами comm.GMSKModulator. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

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

Конструкция

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

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

Свойства

BitInput

Предположим, что вход является битами

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

Когда вы устанавливаете BitInput свойство к false, а step метод входа требует двойной точности или знакового целочисленного типа данных векторов-столбцов со значениями -1 или 1.

Когда вы устанавливаете BitInput свойство true, вход шагового метода требует двойной точности или логического типа данных векторов-столбцов 0s и 1s.

BandwidthTimeProduct

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

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

PulseLength

Длина импульса

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

SymbolPrehistory

Символьная доистория

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

InitialPhaseOffset

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

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

SamplesPerSymbol

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

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

OutputDataType

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

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

Методы

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

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

reset

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

Примеры

свернуть все

% Create a GMSK modulator, an AWGN channel, and a GMSK demodulator. Use a phase offset of pi/4.
    hMod = comm.GMSKModulator('BitInput', true, 'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.GMSKDemodulator('BitOutput', true, ...
                    'InitialPhaseOffset', pi/4);
% Create an error rate calculator, account for the delay caused by the Viterbi algorithm
    hError = comm.ErrorRate('ReceiveDelay', hDemod.TracebackDepth);
    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.000133
Number of errors = 4

Этот пример иллюстрирует отображение двоичных последовательностей нулей и таковых на выход модулятора GMSK. Отношение также применяется для модуляции MSK.

Создайте GMSK модулятор, который принимает двоичные входы. Задайте длину импульса и выборок на символ равные 1.

gmsk = comm.GMSKModulator('BitInput',true,'PulseLength',1,'SamplesPerSymbol',1);

Создайте вход последовательность всех нулей. Модулируйте последовательность.

x = zeros(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 - 1.0000i
  -1.0000 + 0.0000i
   0.0000 + 1.0000i
   1.0000 - 0.0000i

Определите угол фазы для каждой точки. Используйте unwrap функция, чтобы лучше показать тренд.

theta = unwrap(angle(y))
theta = 5×1

         0
   -1.5708
   -3.1416
   -4.7124
   -6.2832

Последовательность нулей заставляет фазу сдвигаться на -,/2 между выборками.

Сбросьте модулятор. Модулируйте вход последовательность всех таковых.

reset(gmsk)
x = ones(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 + 1.0000i
  -1.0000 - 0.0000i
   0.0000 - 1.0000i
   1.0000 + 0.0000i

Определите угол фазы для каждой точки. Используйте unwrap функция, чтобы лучше показать тренд.

theta = unwrap(angle(y))
theta = 5×1

         0
    1.5708
    3.1416
    4.7124
    6.2832

Последовательность таковых заставляет фазу сдвинуться на + ,/2 между выборками.

Сравните схемы модуляции Гауссовой манипуляции минимальным сдвигом (GMSK) и минимальной манипуляции сдвигом (MSK) путем построения графика глазковой диаграммы для GMSK с различными длинами импульсов и для MSK.

Установите выборки по переменной символа.

sps = 8;

Сгенерируйте случайные двоичные данные.

data = randi([0 1],1000,1);

Создайте модуляторы GMSK и MSK, которые принимают двоичные входы. Установите PulseLength свойство модулятора GMSK для 1.

gmskMod = comm.GMSKModulator('BitInput',true,'PulseLength',1, ...
    'SamplesPerSymbol',sps);
mskMod = comm.MSKModulator('BitInput',true,'SamplesPerSymbol',sps);

Модулируйте данные с помощью модуляторов GMSK и MSK.

modSigGMSK = gmskMod(data);
modSigMSK = mskMod(data);

Пропустите модулированные сигналы через канал AWGN, имеющий ОСШ 30 дБ.

rxSigGMSK = awgn(modSigGMSK,30);
rxSigMSK = awgn(modSigMSK,30);

Используйте eyediagram функция для построения графика глазковых диаграмм сигналов с шумом. При установленной длине импульса GMSK 1, глазковые диаграммы почти идентичны.

eyediagram(rxSigGMSK,sps,1,sps/2)

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.

eyediagram(rxSigMSK,sps,1,sps/2)

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.

Установите PulseLength свойство для объекта модулятора GMSK, чтобы 3. Поскольку свойство nontunable, объект должен быть освобожден первым.

release(gmskMod)
gmskMod.PulseLength = 3;

Сгенерируйте модулированный сигнал с помощью обновленного объекта модулятора GMSK и передайте его через канал AWGN.

modSigGMSK = gmskMod(data);
rxSigGMSK = awgn(modSigGMSK,30);

При непрерывной фазовой модуляции (CPM) формы волны, такие как GSMK, форма волны зависит от значений предыдущих символов, а также от настоящего символа. Постройте глазковую диаграмму сигнала GMSK, чтобы увидеть, что увеличение длины импульса приводит к увеличению количества путей в глазковой диаграмме.

eyediagram(rxSigGMSK,sps,1,sps/2)

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.

Экспериментируйте путем изменения PulseLength параметр объекта модулятора GMSK к другим значениям. Если вы устанавливаете свойство четным числом, вы должны задать gmskMod.InitialPhaseOffset на pi/4 и обновите аргумент смещения eyediagram функция от sps/2 на 0 для лучшего представления модулированного сигнала. Чтобы более четко просмотреть форму Гауссова импульса, вы должны использовать области, которые отображают фазу сигнала, как описано в примере CPM Phase Tree.

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на GMSK Modulator Baseband блочных страниц с описанием. Свойства объекта соответствуют параметрам блоков. Для GMSK сдвиг фазы за символ - π/2, который является индексом модуляции 0,5.

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

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