comm.GMSKModulator

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

Описание

comm.GMSKModulator Система object™ модулирует использование метода Гауссова минимального манипулирования сдвига (GMSK). Выход представляет собой репрезентацию модулированного сигнала. Для большего количества детали см. Алгоритмы.

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

  1. Создайте comm.GMSKModulator объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

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

пример

gmskmodulator = comm.GMSKModulator(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'PulseLength',6 задает длину Гауссовой импульсной формы как 6 интервалов символа.

Свойства

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

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Опция, чтобы обеспечить вход в битах в виде числового или логического 0 ложь) или 1 TRUE).

  • Когда вы устанавливаете это свойство на false, вход к вызову Системного объекта требует вектор-столбца типа данных или целого числа со знаком с двойной точностью со значениями -1 или 1.

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

Типы данных: логический

Продукт полосы пропускания и время символа для Гауссовой импульсной формы в виде значения положительной скалярной величины. Для большего количества детали см. Алгоритмы.

Чтобы наблюдать эффект этого свойства на модулируемом сигнале, смотрите Эффект продукта Времени Полосы пропускания на GMSK Модулируемый пример Сигнала.

Типы данных: double

Импульсная длина в виде положительного целого числа. Импульсное значение длины представляет длину Гауссовой импульсной формы в интервалах символа.

Типы данных: double

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

Типы данных: double

Смещение начальной фазы модулируемой формы волны в радианах в виде числового скаляра.

Типы данных: double

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

Типы данных: double

Выходные данные вводят в виде любого double или single.

Использование

Синтаксис

Описание

Y = gmskmodulator(X) применяет модуляцию GMSK к входным данным и возвращает модулируемый сгенерированный модулированный сигнал GMSK.

Входные параметры

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

Входные данные в виде целого числа или вектор-столбца целых чисел или битов.

Установка свойства BitInput определяет интерпретацию входных данных.

Типы данных: double | logical

Выходные аргументы

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

Модулируемый GMSK сгенерированный модулированный сигнал, возвращенный как вектор.

Длина вектора равна номеру входных демонстрационных времен свойство SamplesPerSymbol. Для получения дополнительной информации о типе выходных данных, смотрите свойство OutputDataType.

Типы данных: double | single
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

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

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

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

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

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

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

x = zeros(5,1);
y = gmskmodulator(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(gmskmodulator)
x = ones(5,1);
y = gmskmodulator(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 и пару демодулятора. Создайте объект канала AWGN.

gmskmodulator = comm.GMSKModulator('BitInput',true, ...
                             'InitialPhaseOffset',pi/4);
channel = comm.AWGNChannel('NoiseMethod', ...
                           'Signal to noise ratio (SNR)', ...
                           'SNR',0);
gmskdemodulator = comm.GMSKDemodulator('BitOutput',true, ...
                                 'InitialPhaseOffset',pi/4);

Создайте калькулятор коэффициента ошибок и объясните задержку между модулятором и демодулятором, вызванным алгоритмом Viterbi.

errorRate = comm.ErrorRate('ReceiveDelay', ...
                            gmskdemodulator.TracebackDepth);

Обработайте 100 кадров цикличного выполнения данных через эти шаги.

  1. Сгенерируйте векторы с 300 элементами случайных двоичных данных.

  2. GMSK - модулирует данные.

  3. Передайте модулируемые данные через канал AWGN.

  4. GMSK - демодулирует данные.

  5. Соберите статистику ошибок на системах координат данных.

for counter = 1:100
   % Transmit 100 3-bit words
   data = randi([0 1],300,1);
   modSignal = gmskmodulator(data);
   noisySignal = channel(modSignal);
   receivedData = gmskdemodulator(noisySignal);
   errorStats = errorRate(data, receivedData);
end

Отобразите статистику ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
         errorStats(1), errorStats(2))
Error rate = 0.000133
Number of errors = 4

Этот пример демонстрирует эффект продукта времени полосы пропускания (BT) на GMSK модулируемый сигнал.

Создайте вектор двоичных данных и примените модуляцию GMSK к данным.

d = [0 1 1 0 1 0 0 1 1 1]';
a = comm.GMSKModulator(BitInput=true,SamplesPerSymbol=10)
a = 
  comm.GMSKModulator with properties:

                BitInput: true
    BandwidthTimeProduct: 0.3000
             PulseLength: 4
        SymbolPrehistory: 1
      InitialPhaseOffset: 0
        SamplesPerSymbol: 10
          OutputDataType: 'double'

x = a(d);
BTa = sprintf('BT=%2.1f',a.BandwidthTimeProduct);

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

plot(unwrap(angle(x)),'red-');
title('Bandwidth Time Product Effect')
hold on; 
plot(1:10:length(x),unwrap(angle(x(1:10:end))),'*'); 
grid on

Установите продукт BT на 1 и постройте углы фазы в том же графике.

a = comm.GMSKModulator(BitInput=true, ...
    SamplesPerSymbol=10,BandwidthTimeProduct=1)
a = 
  comm.GMSKModulator with properties:

                BitInput: true
    BandwidthTimeProduct: 1
             PulseLength: 4
        SymbolPrehistory: 1
      InitialPhaseOffset: 0
        SamplesPerSymbol: 10
          OutputDataType: 'double'

x = a(d);
BTb = sprintf('BT=%2.1f',a.BandwidthTimeProduct);
plot(unwrap(angle(x)),'blue-.'); 
plot(1:10:length(x),unwrap(angle(x(1:10:end))),'o'); 

Установите продукт BT на 0,1 и постройте углы фазы в том же графике.

a = comm.GMSKModulator(BitInput=true, ...
    SamplesPerSymbol=10,BandwidthTimeProduct=0.1)
a = 
  comm.GMSKModulator with properties:

                BitInput: true
    BandwidthTimeProduct: 0.1000
             PulseLength: 4
        SymbolPrehistory: 1
      InitialPhaseOffset: 0
        SamplesPerSymbol: 10
          OutputDataType: 'double'

BTc = sprintf('BT=%2.1f',a.BandwidthTimeProduct);

Распространение этого импульса обратно пропорционально продукту BT, и более низкий BT вызывает более широкое распространение по битному символьному периоду. Пиковая амплитуда импульса прямо пропорциональна продукту BT, и более низкая пиковая амплитуда вызывает более узкое распространение по битному символьному периоду. Как полоса пропускания импульсных уменьшений, импульсных увеличений длительности.

x = a(d);
plot(unwrap(angle(x)),'green--'); 
plot(1:10:length(x),unwrap(angle(x(1:10:end))),'x');
legend(BTa,'',BTb,'',BTc,'')
hold off;

Figure contains an axes object. The axes object with title Bandwidth Time Product Effect contains 6 objects of type line. These objects represent BT=0.3, BT=1.0, BT=0.1.

Сравните схемы модуляции Гауссова минимального манипулирования сдвига (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)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes object 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 objects. Axes object 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes object 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 objects. Axes object 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes object 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.

Алгоритмы

BandwidthTimeProduct свойство представляет полосу пропускания, умноженную на время. Используйте это свойство уменьшать полосу пропускания за счет увеличенной интерференции межсимвола. PulseLength свойство измеряет длину Гауссовой импульсной формы в интервалах символа. Эти уравнения задают форму импульса частоты. B b представляет полосу пропускания импульса, и T является длительностью символа. Q(t) является дополнительной кумулятивной функцией распределения.

g(t)=12T{Q[2πBbtT2ln(2)]Q[2πBbt+T2ln(2)]}Q(t)=t12πeτ2/2dτ

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

Ссылки

[1] Андерсон, Джон Б., скалистая вершина Олин и Карл-Эрик Зундберг. Цифровая фазовая модуляция. Нью-Йорк: нажатие пленума, 1986.

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

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