ACPR и измерения CCDF с системными объектами MATLAB

Измерения ACPR

В этом примере показано, как измерить смежное отношение степени канала (ACPR) от основной полосы, сигнала QPSK на 50 Кбит/с. ACPR является отношением степени сигнала, измеренной в смежном диапазоне частот к степени от того же сигнала, измеренного в его основной полосе. Номер выборок на символ определяется к четыре.

Установите выборки на символ (sps) и пропускная способность канала (bwПараметры.

sps = 4;
bw = 50e3;

Сгенерируйте 10 000 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. Поскольку свойство AdjacentChannelOffset является ненастраиваемым, необходимо сначала выпустить 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

В этом примере показано, как использовать Системный объект Дополнительной кумулятивной функции распределения (CCDF), чтобы измерить вероятность мгновенной степени сигнала, бывшей больше заданного уровня по его средней степени. Создайте comm.CCDF возразите, включите выходной порт PAPR и установите максимальный предел степени сигнала к 50 dBm.

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 для двух сигналов. Два оцениваемые сигнала должны быть той же длиной, таким образом, первые 4 000 символов оценены.

[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 степеней передачи dBm необходимы, чтобы закрыть 64-QAM ссылку, усилитель мощности должен иметь максимальную власть 33.7 dBm гарантировать линейную операцию. Если тем же сигналом был затем модулируемый OFDM, 39,5 dBm усилителей мощности требуются.