使用 MATLAB System object 进行 ACPR 和 CCDF 测量
ACPR 测量
此示例说明如何从基带 50 kbps QPSK 信号测量相邻信道功率比 (ACPR)。ACPR 是在相邻频带中测量的信号功率与在其主带中测量的同一信号功率的比值。每符号的采样数设置为 4。
设置每符号的采样数 (sps
) 和信道带宽 (bw
) 参数。
sps = 4; bw = 50e3;
生成 10,000 个用于 QPSK 调制的 4 进制符号。
data = randi([0 3],10000,1);
构造一个 QPSK 调制器,然后调制输入数据。
x = pskmod(data,4);
对调制信号应用矩形脉冲整形。这种类型的脉冲整形通常不用于实际系统,此处仅作说明用途。
y = rectpulse(x,sps);
构造一个 ACPR System object。采样率是带宽乘以每符号的采样数。假设主信道位于 0 处,而相邻信道偏移量设置为 50 kHz(与主信道的带宽相同)。同样,相邻信道的测量带宽设置为与主信道相同。最后,启用主信道和相邻信道功率输出端口。
acpr = comm.ACPR(SampleRate=bw*sps,... MainChannelFrequency=0,... MainMeasurementBandwidth=bw,... AdjacentChannelOffset=50e3,... AdjacentMeasurementBandwidth=bw,... MainChannelPowerOutputPort=true,... AdjacentChannelPowerOutputPort=true);
测量信号 y 的 ACPR、主信道功率和相邻信道功率。
[ACPRout,mainPower,adjPower] = acpr(y)
ACPRout = -9.3071
mainPower = 28.9389
adjPower = 19.6318
将频率偏移量更改为 75 kHz 并确定 ACPR。由于 AdjacentChannelOffset
属性不可调节,您必须首先释放 acpr
。我们看到,当信道偏移量增大时,ACPR 得到改进。
release(acpr) acpr.AdjacentChannelOffset = 75e3; ACPRout = acpr(y)
ACPRout = -13.1702
释放 acpr
并将相邻信道偏移量指定为 50 kHz。
release(acpr) acpr.AdjacentChannelOffset = 50e3;
创建一个升余弦滤波器并对调制信号进行滤波。
txfilter = comm.RaisedCosineTransmitFilter( ...
OutputSamplesPerSymbol=sps);
z = txfilter(x);
测量滤波信号 z
的 ACPR。您可以看到,当使用升余弦脉冲时,ACPR 从 -9.5 dB 改进到 -17.7 dB。
ACPRout = acpr(z)
ACPRout = -17.2245
绘制一系列相邻信道偏移量的相邻信道功率比。将信道偏移量设置为从 30 kHz 到 70 kHz,步长为 10 kHz。前面提到,您必须首先释放 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 测量
此示例说明如何使用功率计 System object™ 测量信号的瞬时功率大于其平均功率指定电平的概率。构造一个 powermeter
对象并设置 Measurement
和 ComputeCCDF
属性。
pm = powermeter(Measurement="Peak-to-average power ratio",ComputeCCDF=true);
设置 OFDM 参数。
fftLength = 256; cyclicPrefixLength = 32; nullIdx = [1:6 fftLength-4:fftLength]'; numFrames = 20; ofdmInputSize = fftLength - numel(nullIdx); ofdmOutputSize = fftLength + cyclicPrefixLength;
生成用于评估的 64-QAM 和 OFDM 信号。
data = randi([0 63],ofdmInputSize,numFrames); % Apply 64-QAM modulation tmpQAM = qammod(data,64); % Save the signal data qamSig = tmpQAM(:); % Apply OFDM modulation to the QAM-modulated signal ofdmSig = ofdmmod(tmpQAM,fftLength,cyclicPrefixLength,nullIdx);
确定两个信号的 PAPR 值。要评估的两个信号必须具有相同长度,因此仅评估前 4000 个符号。
PAPR = pm([qamSig(1:4000),ofdmSig(1:4000)]);
绘制 CCDF 数据。我们看到,OFDM 调制信号的功率高于其平均功率电平 3 dB 以上的可能性远高于 QAM 调制信号。
plotCCDF(pm) legend('QAM','OFDM','location','best')
比较 QAM 调制信号和 OFDM 调制信号的 PAPR 值。
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
您可以看到,通过对 64-QAM 调制信号应用 OFDM 调制,PAPR 增大了 5.8 dB。这意味着,如果闭合 64-QAM 链路需要 30 dBm 的发射功率,则功率放大器的最大功率需要达到 33.7 dBm 才能确保线性运算状态。如果相同信号再经 OFDM 调制,则需 39.5 dBm 的功率放大器。