Сравните, с помощью индикаторных диаграмм, Гауссова минимального манипулирования сдвига (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);
Постройте индикаторные диаграммы сигналов с шумом. С набором длины импульса GMSK к 1, индикаторные диаграммы почти идентичны.
eyediagram(rxSigGMSK,sps,1,sps/2)
eyediagram(rxSigMSK,sps,1,sps/2)
Установите свойство PulseLength
hGMSK
к 3. Поскольку свойство является ненастраиваемым, объект должен быть выпущен сначала.
release(gmskMod) gmskMod.PulseLength = 3;
Сгенерируйте модулируемый сигнал с помощью обновленного объекта модулятора GMSK и передайте его через канал AWGN.
modSigGMSK = gmskMod(data); rxSigGMSK = awgn(modSigGMSK,30);
Постройте индикаторную диаграмму сигнала GMSK. Увеличенная импульсная длина приводит к увеличению количества путей, показывающих, что форма волны CPM зависит от значений предыдущих символов, а также существующего символа.
eyediagram(rxSigGMSK,sps,1,sps/2)
Эксперимент путем изменения параметра PulseLength
hGMSK
к другим значениям. Если вы устанавливаете свойство на четное число, необходимо установить hGMSK.InitialPhaseOffset
на pi/4
и аргумент смещения функции eyediagram
от sps/2
до 0 для лучшего представления модулируемого сигнала. По порядку, чтобы более ясно просмотреть Гауссову импульсную форму, необходимо использовать осциллографы, которые отображают фазу сигнала, как описано в примере Дерева Фазы CPM.