В этом примере показано, как измерить отношение мощности соседнего канала (ACPR) по сигналу QPSK 50 кбит/с. ACPR - отношение мощности сигнала, измеренной в соседней полосе частот, к мощности из того же сигнала, измеренной в ее основной полосе частот. Количество выборок на символ устанавливается равным четырем.
Установите образцы на символ (sps) и пропускной способности канала (bw) параметры.
sps = 4; bw = 50e3;
Генерировать 10000 4-ary символов для модуляции QSPK.
data = randi([0 3],10000,1);
Создайте модулятор QPSK и затем модулируйте входные данные.
qpskMod = comm.QPSKModulator; x = qpskMod(data);
Применить формирование прямоугольных импульсов к модулированному сигналу. Этот тип формирования импульсов обычно не выполняется в практической системе, но используется здесь в иллюстративных целях.
y = rectpulse(x,sps);
Создайте системный объект ACPR. Частота дискретизации - это полоса пропускания, умноженная на количество выборок на символ. Предполагается, что основной канал имеет значение 0, в то время как смещение соседнего канала установлено равным 50 кГц (идентично полосе пропускания основного канала). Аналогично, ширина полосы измерения соседнего канала устанавливается такой же, как и у основного канала. В последнее время активизируйте порты вывода мощности основного и соседнего каналов.
acpr = comm.ACPR('SampleRate',bw*sps,... 'MainChannelFrequency',0,... 'MainMeasurementBandwidth',bw,... 'AdjacentChannelOffset',50e3,... 'AdjacentMeasurementBandwidth',bw,... 'MainChannelPowerOutputPort', true,... 'AdjacentChannelPowerOutputPort',true);
Измерьте ACPR, мощность основного канала и мощность соседнего канала сигнала y.
[ACPRout,mainPower,adjPower] = acpr(y)
ACPRout = -9.3071
mainPower = 28.9389
adjPower = 19.6318
Измените смещение частоты на 75 кГц и определите ACPR. Так как свойство ExecutingStartOffset не может быть настроено, необходимо сначала освободить acpr. Обратите внимание, что ACPR улучшается при увеличении смещения канала.
release(acpr) acpr.AdjacentChannelOffset = 75e3; ACPRout = acpr(y)
ACPRout = -13.1702
Выпуск acpr и задайте смещение соседнего канала 50 кГц.
release(acpr) acpr.AdjacentChannelOffset = 50e3;
Создайте фильтр с увеличенным косинусом и фильтруйте модулированный сигнал.
txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol', sps);
z = txfilter(x);Измерьте ACPR для отфильтрованного сигнала, z. Можно видеть, что ACPR улучшается с -9,5 дБ до -17,7 дБ при использовании импульсов увеличенного косинуса.
ACPRout = acpr(z)
ACPRout = -17.2245
Постройте график отношений мощности соседнего канала для диапазона смещений соседнего канала. Установите смещения канала в диапазоне от 30 кГц до 70 кГц с шагом 10 кГц. Напомним, что сначала необходимо выпустить hACPR для изменения смещения.
freqOffset = 1e3*(30:5:70); release(acpr) acpr.AdjacentChannelOffset = freqOffset;
Определите значения ACPR для сигналов прямоугольной и приподнятой формы косинусных импульсов.
ACPR1 = acpr(y); ACPR2 = acpr(z);
Постройте график отношений мощности соседнего канала.
plot(freqOffset/1000,ACPR1,'*-',freqOffset/1000, ACPR2,'o-') xlabel('Adjacent Channel Offset (kHz)') ylabel('ACPR (dB)') legend('Rectangular','Raised Cosine','location','best') grid

В этом примере показано, как использовать системный объект дополнительной кумулятивной функции распределения (CCDF) для измерения вероятности того, что мгновенная мощность сигнала превысит заданный уровень его средней мощности. Создайте comm.CCDF включите выходной порт PAPR и установите максимальный предел мощности сигнала равным 50 д Бм.
ccdf = comm.CCDF('PAPROutputPort',true,'MaximumPowerLimit', 50);
Создайте модулятор OFDM, имеющий длину БПФ 256 и длину циклического префикса 32.
ofdmMod = comm.OFDMModulator('FFTLength',256,'CyclicPrefixLength',32);
Определение входных и выходных размеров объекта модулятора OFDM с помощью info функции comm.OFDMModulator объект.
ofdmDims = info(ofdmMod)
ofdmDims = struct with fields:
DataInputSize: [245 1]
OutputSize: [288 1]
ofdmInputSize = ofdmDims.DataInputSize; ofdmOutputSize = ofdmDims.OutputSize;
Установка количества кадров OFDM.
numFrames = 20;
Выделение памяти для массивов сигналов.
qamSig = repmat(zeros(ofdmInputSize),numFrames,1); ofdmSig = repmat(zeros(ofdmOutputSize),numFrames,1);
Генерируют сигналы 64-QAM и OFDM для оценки.
for k = 1:numFrames % Generate random data symbols data = randi([0 63],ofdmInputSize); % Apply 64-QAM modulation tmpQAM = qammod(data,64); % Apply OFDM modulation to the QAM-modulated signal tmpOFDM = ofdmMod(tmpQAM); % Save the signal data qamSig((1:ofdmInputSize)+(k-1)*ofdmInputSize(1)) = tmpQAM; ofdmSig((1:ofdmOutputSize)+(k-1)*ofdmOutputSize(1)) = tmpOFDM; end
Определите среднюю мощность сигнала, пиковую мощность сигнала и отношения PAPR для этих двух сигналов. Два оцениваемых сигнала должны иметь одинаковую длину, так что первые 4000 символов оцениваются.
[Fy,Fx,PAPR] = ccdf([qamSig(1:4000),ofdmSig(1:4000)]);
Постройте график данных CCDF. Обратите внимание, что вероятность того, что мощность сигнала, модулированного OFDM, будет более чем на 3 дБ выше его среднего уровня мощности, намного выше, чем для сигнала, модулированного QAM.
plot(ccdf) legend('QAM','OFDM','location','best')

Сравнение значений PAPR для модулированных сигналов QAM и OFDM.
fprintf('\nPAPR for 64-QAM = %5.2f dB\nPAPR for OFDM = %5.2f dB\n',... PAPR(1), PAPR(2))
PAPR for 64-QAM = 3.65 dB PAPR for OFDM = 9.44 dB
Можно видеть, что, применяя модуляцию OFDM к 64-QAM модулированному сигналу, PAPR увеличивается на 5,8 дБ. Это означает, что если мощность передачи 30 дБм необходима для закрытия 64-QAM линии связи, усилитель мощности должен иметь максимальную мощность 33,7 дБм для обеспечения линейной работы. Если тот же самый сигнал был затем модулирован OFDM, требуется усилитель мощности 39,5 дБм.