Используйте фильтр приподнятого косинуса, чтобы уменьшить межсимвольную интерференцию (ISI),к которой приводит нелинейное усиление сигнала.
Инициализируйте переменную симуляции для порядка модуляции.
M = 16; % Modulation order
Создайте объекты фильтра приподнятого косинуса квадратного корня.
txfilter = comm.RaisedCosineTransmitFilter; rxfilter = comm.RaisedCosineReceiveFilter;
Создайте Системный объект нелинейности без памяти, чтобы ввести нелинейное поведение модулируемому сигналу. Используя пары "имя-значение", набор Method
свойство к Saleh model
эмулировать мощный усилитель.
hpa = comm.MemorylessNonlinearity('Method','Saleh model', ... 'InputScaling',-10,'OutputScaling',0);
Сгенерируйте случайные целые числа и примените 16-QAM модуляцию.
x = randi([0 M-1],1000,1);
modSig = qammod(x,M,'UnitAveragePower',true);
Постройте глазковую диаграмму для модулируемого сигнала. Во время 0, существует три отличных "глаза" для 16-QAM модуляции.
eyediagram(modSig,2)
Усильте модулируемый сигнал с помощью hpa
.
txSigNoFilt = hpa(modSig);
Постройте глазковую диаграмму для усиленного сигнала без фильтрации RRC. Во время 0, существует несколько глаз. Это - результат интерференции межсимвола от нелинейного усилителя.
eyediagram(txSigNoFilt,2)
Отфильтруйте модулируемый сигнал с помощью фильтра передачи RRC.
filteredSig = txfilter(modSig);
Выпустите hpa
и усильте отфильтрованный сигнал. release
функция необходима, потому что размерности входного сигнала изменяются должный отфильтровать интерполяцию.
release(hpa) txSig = hpa(filteredSig);
Отфильтруйте txSig
использование соответствующего RRC получает фильтр.
rxSig = rxfilter(txSig);
Постройте глазковую диаграмму для сигнала после применения получить фильтра. Существует еще раз три отличных глаза, когда совпадающие фильтры RRC смягчают ISI.
eyediagram(rxSig,2)