comm.MSKModulator

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

Описание

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

Модулировать сигнал с помощью минимального манипулирования сдвига:

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

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

Примечание

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

Конструкция

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

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

Свойства

BitInput

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

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

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

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

InitialPhaseOffset

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

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

SamplesPerSymbol

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

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

OutputDataType

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

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

Методы

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

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

Примеры

свернуть все

% Create an MSK modulator, an AWGN channel, and an MSK demodulator.  Use a
% phase offset of pi/4.
 hMod = comm.MSKModulator('BitInput', true, ...
                    'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.MSKDemodulator('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.000000
Number of errors = 0

Этот пример иллюстрирует отображение двоичных последовательностей нулей и единиц к выходу модулятора 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);

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

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)

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

Установите 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)

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

Алгоритмы

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

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

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