Этот пример показывает, как измерить отношение степени смежного канала (ACPR) от сигнала QPSK основной полосы частот 50 кбит/с. ACPR является отношением степени сигнала, измеренной в соседней полосе частот, к степени от того же сигнала, измеренного в его основной полосе. Количество выборок на символ устанавливается равным четырем.
Установите выборки по символу (sps
) и пропускная способность канала (bw
) параметры.
sps = 4; bw = 50e3;
Сгенерируйте 10000 4-арных символов для QSPK-модуляции.
data = randi([0 3],10000,1);
Создайте QPSK модулятор, а затем модулируйте входные данные.
qpskMod = comm.QPSKModulator; x = qpskMod(data);
Примените прямоугольное формирование импульса к модулированному сигналу. Этот тип формирования импульсов обычно не выполняется в практической системе, а используется здесь в иллюстративных целях.
y = rectpulse(x,sps);
Создайте объект ACPR System. Частотой дискретизации является полоса пропускания, умноженная на количество выборок на символ. Основной канал принимается равным 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. Поскольку свойство SubstracentChannelOffset является нетронутым, необходимо сначала выпустить 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 дБ. Это означает, что, если для закрытия 64-QAM ссылки необходима степень передачи 30 дБм, усилитель степени должен иметь максимальную степень 33,7 дБм, чтобы гарантировать линейную операцию. Если тот же сигнал был модулирован OFDM, требуется усилитель степени 39,5 дБм.