Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

comm.MemorylessNonlinearity

複素ベースバンド信号への無記憶非線形性の適用

説明

comm.MemorylessNonlinearitySystem object™ は無記憶非線形損失を複素ベースバンド信号に適用します。この System object を使用して、無線周波数 (RF) 送信機または無線周波数受信機の信号増幅によって発生する無記憶非線形損失をモデル化します。詳細については、無記憶非線形損失を参照してください。

メモ

すべての電力値は公称インピーダンス 1 オームを想定しています。

無記憶非線形損失を複素ベースバンド信号に適用するには、次のようにします。

  1. comm.MemorylessNonlinearity オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

mnl = comm.MemorylessNonlinearity は、RF 非線形損失をモデル化する無記憶非線形性 System object を作成します。

mnl = comm.MemorylessNonlinearity(Name,Value) は、1 つ以上の名前と値のペア引数を使用してプロパティを指定します。各プロパティ名を引用符で囲みます。たとえば、'Method','Saleh model' は、モデル化メソッドを Saleh メソッドに設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

非線形性のモデリング手法。'Cubic polynomial''Hyperbolic tangent''Saleh model''Ghorbani model''Rapp model'、または 'Lookup table' として指定します。詳細については、無記憶非線形損失を参照してください。

データ型: char | string

デシベル単位の入力信号のスケーリング係数。スカラーとして指定します。このプロパティは入力信号の電力ゲインをスケーリングします。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Saleh model' または 'Ghorbani model' に設定します。

データ型: double

デシベル単位の線形ゲイン。スカラーとして指定します。このプロパティは出力信号の電力ゲインをスケーリングします。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Cubic polynomial''Hyperbolic tangent'、または 'Rapp model' に設定します。

データ型: double

dBm 単位の 3 次入力インターセプト ポイント。スカラーとして指定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Cubic polynomial' または 'Hyperbolic tangent' に設定します。

データ型: double

デシベルあたりの AM/PM 変換係数 (度単位)。スカラーとして指定します。詳細は、3 次多項式と双曲線正接モデル メソッド を参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Cubic polynomial' または 'Hyperbolic tangent' に設定します。

データ型: double

入力信号の振幅ゲインの計算に使用される AM/AM パラメーター。行ベクトルとして指定します。

  • Method プロパティが 'Saleh model' に設定されている場合、このプロパティは、アルファ値およびベータ値を指定する 2 要素ベクトルでなければなりません。この場合、既定値は [2.1587 1.1517] です。

  • Method プロパティが 'Ghorbani model' に設定されている場合、このプロパティは、x1、x2、x3、および x4 の値を指定する 4 要素ベクトルでなければなりません。この場合、既定値は [8.1081 1.5413 6.5202 -0.0718] です。

詳細は、Saleh モデル メソッドGhorbani モデル メソッドを参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Saleh model' または 'Ghorbani model' に設定します。

データ型: double

入力信号の位相の変更の計算に使用される AM/PM パラメーター。行ベクトルとして指定します。

  • Method プロパティが 'Saleh model' に設定されている場合、このプロパティは、アルファ値およびベータ値を指定する 2 要素ベクトルでなければなりません。この場合、既定値は [4.0033 9.1040] です。

  • Method プロパティが 'Ghorbani model' に設定されている場合、このプロパティは、y1、y2、y3、および y4 の値を指定する 4 要素ベクトルでなければなりません。この場合、既定値は [4.6645 2.0965 10.88 -0.003] です。

詳細は、Saleh モデル メソッドGhorbani モデル メソッドを参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Saleh model' または 'Ghorbani model' に設定します。

データ型: double

入力パワーの下限 (dBm 単位)。PowerUpperLimit プロパティの値より小さいスカラーとして指定します。AM/PM 変換は、範囲 [PowerLowerLimit, PowerUpperLimit] における入力パワー値について線形にスケーリングします。入力信号強度が入力パワーの下限を下回る場合、AM/PM 変換の結果による位相シフトはゼロになります。詳細については、3 次多項式と双曲線正接モデル メソッドを参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Cubic polynomial' または 'Hyperbolic tangent' に設定します。

データ型: double

入力パワーの上限 (dBm 単位)。PowerLowerLimit より大きいスカラーとして指定します。AM/PM 変換は、範囲 [PowerLowerLimit, PowerUpperLimit] における入力パワー値について線形にスケーリングします。入力信号強度が入力パワーの上限を上回る場合、AM/PM 変換の結果による位相シフトは一定になります。詳細については、3 次多項式と双曲線正接モデル メソッドを参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Cubic polynomial' または 'Hyperbolic tangent' に設定します。

データ型: double

デシベル単位の出力信号のスケーリング係数。スカラーとして指定します。このプロパティは出力信号の電力ゲインをスケーリングします。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Saleh model' または 'Ghorbani model' に設定します。

データ型: double

平滑度係数。スカラーとして指定します。詳細は、Rapp モデル メソッド を参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Rapp model' に設定します。

データ型: double

出力の飽和レベル。スカラーとして指定します。詳細は、Rapp モデル メソッド を参照してください。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Rapp model' に設定します。

データ型: double

増幅器特性ルックアップ テーブル。測定されたパワー アンプ (PA) 特性の N 行 3 列の行列として指定します。各行は [Pin, Pout, ΔΦ] の形式です。Pin は PA の入力信号 (dBm 単位) を指定し、Pout は PA の出力信号 (dBm 単位) を指定し、ΔΦ は出力位相シフトを角度で指定します。既定値は [-25, 5.16, -0.25; -20, 10.11, -0.47; -15, 15.11, -0.68; -10, 20.05, -0.89; -5, 24.79, -1.22; 0, 27.64, 5.59; 5, 28.49, 12.03] です。

このプロパティで定義された測定 PA 特性は、AM/AM (dBm/dBm 単位) および AM/PM (deg/dBm 単位) の非線形損失特性の計算に使用されます。この System object は、計算された AM/AM 値 (dBm/dBm 単位) および AM/PM 値 (deg/dBm 単位) で入力信号に歪みを発生させます。

メモ

Table プロパティで指定される値の範囲外の適切な Pout 値および Pin 値の ΔΦ を決定するため、System object は Table の [Pin, Pout, ΔΦ] 行の最初の 2 行または最後の 2 行からの線形外挿を適用します。

調整可能: Yes

依存関係

このプロパティを有効にするには、Method プロパティを 'Lookup table' に設定します。

データ型: double

使用法

説明

outsig = mnl(insig) は、入力 RF ベースバンド信号に対して無記憶非線形損失を適用します。

入力引数

すべて展開する

入力 RF ベースバンド信号。スカラーまたは列ベクトルとして指定します。この入力の値は複素数でなければなりません。

データ型: double
複素数のサポート: あり

出力引数

すべて展開する

出力 RF ベースバンド信号。スカラーまたは列ベクトルとして返されます。出力のデータ型は入力のデータ型と同じです。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

平均パワーが 10 mW の 16-QAM データを生成し、そのデータを非線形パワー アンプ (PA) を経由して渡します。

M = 16;
data = randi([0 (M - 1)]',1000,1);
avgPow = 1e-2;
minD = avgPow2MinD(avgPow,M);

Saleh モデル メソッドを指定して無記憶非線形性 System object を作成します。

saleh = comm.MemorylessNonlinearity('Method','Saleh model');

変調されたシンボルを生成し、PA 非線形性モデルを通して渡します。

modData = (minD/2).*qammod(data,M);
y = saleh(modData);

結果の散布図を生成します。

scatterplot(y)

入力信号の平均パワーの正規化。

function minD = avgPow2MinD(avgPow,M)
    % Average power to minimum distance    
    nBits = log2(M);
    if (mod(nBits,2)==0)
        % Square QAM
        sf = (M - 1)/6;
    else
        % Cross QAM
        if (nBits>4)
            sf = ((31*M/32) - 1)/6;
        else
            sf = ((5*M/4) - 1)/6;
        end
    end
    minD = sqrt(avgPow/sf);
end

16-QAM 信号に対する非線形増幅器のゲイン圧縮をプロットします。

変調次数とシンボルあたりのサンプル数のパラメーターを指定します。

M = 16;
sps = 4;

30 dB の 3 次インターセプト ポイントをもつ無記憶非線形性 System object を作成して、非線形アンプをモデル化します。レイズド コサイン送信フィルター System object を作成します。

amplifier = comm.MemorylessNonlinearity('IIP3',30);

txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6, ...
    'OutputSamplesPerSymbol',sps, ...
    'Gain',sqrt(sps));

入力パワーを dBm 単位で指定します。入力パワーを W に変換し、ゲイン ベクトルを初期化します。

pindBm = -5:25;
pin = 10.^((pindBm-30)/10);
gain = zeros(length(pindBm),1);

主処理ループを実行します。このループには次のステップが含まれています。

  • ランダム データ シンボルを生成します。

  • データ シンボルを変調して信号の平均パワーを調整します。

  • 変調した信号をフィルター処理します。

  • 信号を増幅します。

  • ゲインを測定します。

for k = 1:length(pin)
    data = randi([0 (M - 1)],1000,1);
    modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin(k));
    filtSig = txfilter(modSig);
    ampSig = amplifier(filtSig);
    gain(k) = 10*log10(var(ampSig)/var(filtSig));
end

増幅器のゲインを入力信号強度の関数としてプロットします。18.5 dBm の入力強度に対して 1 dB のゲイン圧縮点が発生します。1 dB の圧縮が観察される点を増加させるには、3 次インターセプト ポイント amplifier.IIP3 を増加させます。

arrayplot = dsp.ArrayPlot('PlotType','Line','XLabel','Power In (dBm)', ...
    'XOffset',-5,'YLimits',[-5 5]);

arrayplot(gain)

Method プロパティを 'Lookup table' に設定して、非線形パワー アンプ (PA) の特性を 16-QAM 信号に適用します。

変調次数、シンボルあたりのサンプル数、入力パワーのパラメーターを定義します。ランダム データを作成します。

M = 16; % Modulation order
sps = 4; % Samples per symbol
pindBm = -2; % Input power
pin = 10.^((pindBm-30)/10); % power in Watts
data = randi([0 (M - 1)],1000,1);
refdata = 0:M-1;
refconst = qammod(refdata,M,'UnitAveragePower',true);

無記憶非線形性 System object、送信フィルター System object、およびコンスタレーション ダイアグラム System object を作成します。無記憶非線形性 System object には既定のルックアップ テーブル値が使用されます。

amplifier = comm.MemorylessNonlinearity('Method','Lookup table');
txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6,'OutputSamplesPerSymbol',sps,'Gain',sqrt(sps));
constellation = comm.ConstellationDiagram('SamplesPerSymbol',4,'ReferenceConstellation',refconst, ...
    'Title','Amplified/Distorted Signal');

ランダム データを変調します。非線形増幅器の特性をフィルター処理して変調シンボルに適用します。

modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin);
filtSig = txfilter(modSig);
ampSig = amplifier(filtSig);

入出力信号レベルと位相シフトを計算します。

poutdBm = (20*log10(abs(ampSig))) + 30;
simulated_pindBm = (20*log10(abs(filtSig))) + 30;
phase = angle(ampSig.*conj(filtSig))*180/pi;

AM/AM 特性、AM/PM 特性、およびコンスタレーション結果をプロットします。

figure
set(gcf,'units','normalized','position',[.25 1/3 .5 1/3])
subplot(1,2,1)
plot(simulated_pindBm,poutdBm,'.'); 
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,2),'.','Markersize',15);
xlabel('Input Power (dBm)')
ylabel('Output Power (dBm)');
grid on; 
title('AM/AM Characteristics');
leglabels = {'Simulated results','Measurement'};
legend (leglabels,'Location','north');

subplot(1,2,2)
plot(simulated_pindBm,phase,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,3),'.','Markersize',15);
legend (leglabels,'Location','north');
xlabel('Input Power (dBm)'); 
ylabel('Output Phase Shift (degrees)');
grid on; title('AM/PM Characteristics');

増幅された信号と基準コンスタレーションのコンスタレーション ダイアグラムを生成します。非線形増幅器の特性により、基準コンスタレーションと比較して、増幅されたコンスタレーションの圧縮が引き起こされています。

constellation(ampSig)

Method プロパティを 'Lookup table' に設定して、非線形パワー アンプ (PA) の特性を 16-QAM 信号に適用します。

変調次数、シンボルあたりのサンプル数、入力パワーのパラメーターを定義します。ランダム データを作成します。

M = 16; % Modulation order
sps = 4; % Samples per symbol
pindBm = -8; % Input power
pin = 10.^((pindBm-30)/10); % power in Watts
data = randi([0 (M - 1)],1000,1);
refdata = 0:M-1;
refconst = qammod(refdata,M,'UnitAveragePower',true);
paChar = pa_performance_characteristics();

無記憶非線形性 System object、送信フィルター System object、およびコンスタレーション ダイアグラム System object を作成します。無記憶非線形性 System object には既定のルックアップ テーブル値が使用されます。

amplifier = comm.MemorylessNonlinearity('Method','Lookup table','Table',paChar);
txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6,'OutputSamplesPerSymbol',sps,'Gain',sqrt(sps));
constellation = comm.ConstellationDiagram('SamplesPerSymbol',4, ...
    'Title','Amplified/Distorted Signal','NumInputPorts',2, ...
    'ReferenceConstellation', refconst,'ShowLegend',true, ...
    'ChannelNames',{'Filtered signal','Amplified signal'});

ランダム データを変調します。非線形増幅器の特性をフィルター処理して変調シンボルに適用します。

modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin);
filtSig = txfilter(modSig);
ampSig = amplifier(filtSig);

入出力信号レベルと位相シフトを計算します。

poutdBm = (20*log10(abs(ampSig))) + 30;
simulated_pindBm = (20*log10(abs(filtSig))) + 30;
phase = angle(ampSig.*conj(filtSig))*180/pi;

AM/AM 特性、AM/PM 特性、およびコンスタレーション結果をプロットします。

figure
set(gcf,'units','normalized','position',[.25 1/3 .5 1/3])
subplot(1,2,1)
plot(simulated_pindBm,poutdBm,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,2),'.','Markersize',15);
xlabel('Input Power (dBm)')
ylabel('Output Power (dBm)');
grid on;
title('AM/AM Characteristics');
leglabel = {'Simulated results','Measurement'};
legend (leglabel,'Location','south');

subplot(1,2,2)
plot(simulated_pindBm,phase,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,3),'.','Markersize',15);
legend (leglabel,'Location','south');
xlabel('Input Power (dBm)');
ylabel('Output Phase Shift (degrees)');
grid on;
title('AM/PM Characteristics');

コンスタレーションの比較のために、増幅された信号とフィルター処理された信号を正規化します。フィルター処理された信号と増幅された信号のコンスタレーション ダイアグラムを生成します。非線形増幅器の特性により、フィルター処理されたコンスタレーションと比較して、増幅されたコンスタレーションの圧縮が引き起こされています。

filtSig = filtSig/mean(abs(filtSig)); % Normalized filtered signal
ampSig = ampSig/mean(abs(ampSig)); % Normalized amplified signal
constellation(filtSig,ampSig)

補助関数 pa_performance_characteristics により、増幅器のパフォーマンス特性が計算されます。このデータは、次の図 4 から抽出されています。Hammi, Oualid, et al."Power amplifiers' model assessment and memory effects intensity quantification using memoryless post-compensation technique."IEEE Transactions on Microwave Theory and Techniques 56.12 (2008):3170-3179.

function paChar = pa_performance_characteristics()

LDMOS ベースのドハティ増幅器の動作仕様は以下のとおりです。

  • 2110 MHz の周波数

  • 300 W のピーク パワー

  • 61 dB の小信号増幅率

HAV08_Table の各行は、Pin (dBm)、ゲイン (dB)、位相シフト (度) を指定します。

HAV08_Table =...
    [-35,60.53,0.01;
    -34,60.53,0.01;
    -33,60.53,0.08;
    -32,60.54,0.08;
    -31,60.55,0.1;
    -30,60.56,0.08;
    -29,60.57,0.14;
    -28,60.59,0.19;
    -27,60.6,0.23;
    -26,60.64,0.21;
    -25,60.69,0.28;
    -24,60.76,0.21;
    -23,60.85,0.12;
    -22,60.97,0.08;
    -21,61.12,-0.13;
    -20,61.31,-0.44;
    -19,61.52,-0.94;
    -18,61.76,-1.59;
    -17,62.01,-2.73;
    -16,62.25,-4.31;
    -15,62.47,-6.85;
    -14,62.56,-9.82;
    -13,62.47,-12.29;
    -12,62.31,-13.82;
    -11,62.2,-15.03;
    -10,62.15,-16.27;
    -9,62,-18.05;
    -8,61.53,-20.21;
    -7,60.93,-23.38;
    -6,60.2,-26.64;
    -5,59.38,-28.75];

無記憶非線形性 System object で使用するために、HAV08_Table の 2 列目をゲインから Pout に変換します。

paChar = HAV08_Table;
paChar(:,2) = paChar(:,1) + paChar(:,2);
end

詳細

すべて展開する

参照

[1] Saleh, A.A.M. “Frequency-Independent and Frequency-Dependent Nonlinear Models of TWT Amplifiers.” IEEE Transactions on Communications 29, no. 11 (November 1981): 1715–20. https://doi.org/10.1109/TCOM.1981.1094911.

[2] Ghorbani, A., and M. Sheikhan. "The Effect of Solid State Power Amplifiers (SSPAs) Nonlinearities on MPSK and M-QAM Signal Transmission." In 1991 Sixth International Conference on Digital Processing of Signals in Communications, 193–97, 1991.

[3] Rapp, Ch. "Effects of HPA-Nonlinearity on a 4-DPSK/OFDM-Signal for a Digital Sound Broadcasting System." In Proceedings Second European Conf. on Sat. Comm. (ESA SP-332), 179–84. Liege, Belgium, 1991. https://elib.dlr.de/33776/.

拡張機能

参考

オブジェクト

ブロック

R2012a で導入