Используйте повышенную фильтрацию косинуса, чтобы уменьшать интерференцию межсимвола (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)