このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MATLAB System object による ACPR と CCDF の測定
ACPR の測定
この例では、50 kbps のベースバンド QPSK 信号からの隣接チャネル電力比 (ACPR) を測定する方法を説明します。ACPR は、隣接周波数帯域で測定される信号電力の主帯域で測定される同じ信号による電力に対する割合です。シンボルあたりのサンプル数は 4 に設定します。
シンボルあたりのサンプル数 (sps
) とチャネル帯域幅 (bw
) のパラメーターを設定します。
sps = 4; bw = 50e3;
QPSK 変調用に 10,000 個の 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);
2 つの信号の PAPR 値を決定します。最初の 4000 シンボルが評価されるので、評価対象の 2 つの信号は同じ長さでなければなりません。
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
OFDM 変調を 64-QAM 変調信号に適用すると、PAPR が 5.8 dB 増加することがわかります。これは、64-QAM リンクを閉じるために 30 dBm の送信電力が必要な場合、線形操作を維持するためにはパワー アンプに最大 33.7 dBm の電力が必要であることを意味しています。同じ信号が OFDM 変調される場合は、39.5 dBm のパワー アンプが必要です。