Сравните, с помощью глазковых диаграмм, Гауссова минимального манипулирования сдвига (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.