В этом примере показано, как измерить смежное отношение степени канала (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), чтобы измерить вероятность мгновенной степени сигнала, бывшей больше заданного уровня по его средней степени. Создайте 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 усилителей мощности требуются.