exponenta event banner

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

Модулировать с помощью метода GMSK

Описание

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

Для модуляции сигнала с использованием гауссовой минимальной манипуляции сдвигом:

  1. Определите и настройте объект модулятора GMSK. См. раздел Строительство.

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

Примечание

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

Строительство

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

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

Свойства

BitInput

Предположим, что вход - это биты

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

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

При установке BitInput значение true, для ввода метода шага требуется вектор столбца с двойной точностью или логический тип данных 0 и 1.

BandwidthTimeProduct

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

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

PulseLength

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

Укажите длину гауссова импульса в символьных интервалах как действительное положительное целое число. Значение по умолчанию: 4.

SymbolPrehistory

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

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

InitialPhaseOffset

Начальное фазовое смещение

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

SamplesPerSymbol

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

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

OutputDataType

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

Укажите тип выходных данных как один из double | single. Значение по умолчанию: double.

Методы

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

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

reset

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

Примеры

свернуть все

% 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 между выборками.

Сравните схемы модуляции Gaussian minimum shift keying (GMSK) и minimum shift keying (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, имеющий SNR, равный 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. Поскольку свойство не настраивается, объект должен быть сначала освобожден.

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.

Алгоритмы

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

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

.
Представлен в R2012a