Используйте фильтр приподнятого косинуса, чтобы уменьшить межсимвольную интерференцию (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
и усилить отфильтрованный сигнал. The release
функция необходима, потому что размерности входного сигнала изменяются из-за интерполяции фильтра.
release(hpa) txSig = hpa(filteredSig);
Фильтрация txSig
использование соответствующего фильтра приема RRC.
rxSig = rxfilter(txSig);
Постройте график глазковой диаграммы сигнала после применения приёмного фильтра. Снова существует три разных глаза, поскольку соответствующие фильтры RRC уменьшают ISI.
eyediagram(rxSig,2)