最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.MemorylessNonlinearity

入力信号に無記憶非線形性を適用する

説明

MemorylessNonlinearity オブジェクトは、複素ベースバンド信号に無記憶非線形性を適用します。このオブジェクトを使用すると、受信側の信号に対する無線周波数 (RF) 障害のモデルを構成できます。

入力信号に無記憶非線形性を適用するには、以下の手順に従います。

  1. 無記憶非線形性オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.MemorylessNonlinearity のプロパティに従い、無記憶非線形性を適用します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object™ によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

H = comm.MemorylessNonlinearity は、無記憶非線形性 System object H を作成します。このオブジェクトは、受信側の無線周波数 (RF) 障害をモデル化します。

H = comm.MemorylessNonlinearity(Name,Value) は、指定された各プロパティを指定値に設定して、無記憶非線形性オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、のように、追加の名前と値のペアの引数を任意の順番で指定できます。

プロパティ

Method

モデルの非線形性に使用する手法

非線形性手法を Cubic polynomialHyperbolic tangentSaleh modelGhorbani modelRapp model'Lookup table' のいずれかに指定します。既定の設定は Cubic polynomial です。このプロパティは調整不可能です。

InputScaling

入力信号に適用するスケール係数

スケール係数をデシベル単位で指定します。オブジェクトは、この係数を倍精度または単精度データ型の実数スカラー値として、入力信号に適用します。既定の設定は 0 です。このプロパティは、Method プロパティを Saleh model または Ghorbani model に設定した場合に適用されます。このプロパティは調整可能です。

LinearGain

出力信号に適用する線形ゲイン

オブジェクトが出力信号に適用する線形ゲイン (デシベル単位) を、倍精度または単精度データ型の実数スカラー値で指定します。既定の設定は 0 です。このプロパティは、Method のプロパティが Cubic polynomialHyperbolic tangent、または Rapp model に設定されている場合に適用されます。このプロパティは調整可能です。

IIP3

3 次入力インターセプト ポイント

3 次入力インターセプト ポイント (1 ミリワットに対するデシベル数) を、倍精度または単精度データ型の実数スカラー値で指定します。既定の設定は 30 です。このプロパティは、Method プロパティを Cubic polynomial または Hyperbolic tangent に設定した場合に適用されます。このプロパティは調整可能です。

AMPMConversion

AM/PM 変換係数

AM/PM 変換係数 (1 デシベルあたりの度数) を、倍精度または単精度データ型の実数スカラー値で指定します。既定の設定は 10 です。このプロパティは、Method プロパティを Cubic polynomial または Hyperbolic tangent に設定した場合に適用されます。このプロパティは調整可能です。

AMAMParameters

AM/AM 変換パラメーター

入力信号の振幅ゲインを計算するために使用する AM/AM 変換パラメーターを、倍精度または単精度データ型の実数ベクトルで指定します。既定の設定は、Saleh モデルの場合は [2.1587 1.1517]、Ghorbani モデルの場合は [8.1081 1.5413 6.5202 -0.0718] です。

このプロパティは、Method プロパティを Saleh model または Ghorbani model に設定した場合に適用されます。

Method プロパティを Saleh model に設定した場合、このプロパティは、アルファ値およびベータ値を示す 2 要素ベクトルです。それ以外の場合は、このプロパティは x1、x2、x3、x4 の値を示す 4 要素ベクトルです。このプロパティは調整可能です。

AMPMParameters

AM/PM 変換パラメーター

入力信号の位相の変化量を計算するために使用する AM/PM 変換パラメーターを、倍精度または単精度データ型の実数ベクトルで指定します。既定の設定は、Saleh モデルの場合は [4.0033 9.1040]、Ghorbani モデルの場合は [4.6645 2.0965 10.88 -0.003] です。

このプロパティは、Method プロパティを Saleh model または Ghorbani model に設定した場合に適用されます。

Method プロパティを Saleh model に設定した場合、このプロパティは、アルファ値およびベータ値を示す 2 要素ベクトルです。それ以外の場合は、このプロパティは y1、y2、y3、y4 の値を示す 4 要素ベクトルです。このプロパティは調整可能です。

PowerLowerLimit

入力パワー下限値

AM/PM 変換による入力パワー値の線形スケール化を行うための、スカラーとして指定される最小入力パワー (1 ミリワットに対するデシベル数)。既定の設定は 10 です。この値より小さい場合は、AM/PM 変換による位相シフトはゼロとされます。このプロパティは、Method プロパティを Cubic polynomial または Hyperbolic tangent に設定した場合に適用されます。このプロパティは調整可能です。

PowerUpperLimit

入力パワー上限値

AM/PM 変換による入力パワー値の線形スケール化を行うための、最大入力パワー (1 ミリワットに対するデシベル数) を指定します。既定の設定は inf です。この値より大きい場合は、AM/PM 変換による位相シフトは定数値にされます。PowerUpperLimit プロパティは、PowerLowerLimit プロパティよりも大きい、倍精度または単精度データ型の実数スカラー値に設定しなければなりません。このプロパティは、Method のプロパティが Cubic polynomial または Hyperbolic tangent に設定されている場合に適用されます。このプロパティは調整可能です。

OutputScaling

出力信号に適用するスケール係数

オブジェクトが出力信号に適用するスケール係数 (デシベル単位) を、倍精度または単精度データ型の実数スカラー値で指定します。既定の設定は 0 です。このプロパティは、Method プロパティを Saleh model または Ghorbani model に設定した場合に適用されます。このプロパティは調整可能です。

Smoothness

平滑度係数

平滑度係数を倍精度または単精度データ型の実数スカラー値で設定します。既定の設定は 0.5 です。このプロパティは、Method プロパティを Rapp model に設定した場合に適用されます。このプロパティは調整可能です。

OutputSaturationLevel

出力の飽和レベル

出力の飽和レベルを倍精度または単精度データ型の実数スカラー値で設定します。このプロパティは、Method プロパティを Rapp model に設定した場合に適用されます。既定の設定は 1 です。このプロパティは調整可能です。

Table

増幅器特性ルックアップ テーブル

増幅器特性ルックアップ テーブル。測定されたパワー アンプ (PA) 特性の [Pin,Pout,Φ] 行 N 列の行列として指定します。行列の N 行には、PA 入力信号 Pin、PA 出力信号 Pout、および出力位相シフト Φ の測定値が含まれます。信号レベル (Pin および Pout) は dBm 単位、位相シフト (Φ) は度単位でなければなりません。この System object は、このプロパティで定義された測定 PA 特性を使用して、AM/AM (dBm/dBm 単位) および AM/PM (deg/dBm 単位) の非線形損失特性を計算します。この System object は、計算された AM/AM (dBm/dBm 単位) および AM/PM (deg/dBm 単位) で入力信号に歪みを発生させます。既定の PA 特性の行列は、[-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] です。このプロパティは、Method プロパティを 'Lookup table' に設定した場合に適用されます。このプロパティは調整可能です。

メソッド

step入力信号に無記憶非線形性を適用する
すべての System object に共通
release

System object のプロパティ値の変更の許可

すべて展開する

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

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');

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

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 次インターセプト ポイントをもつ無記憶非線形性オブジェクトを作成します。レイズド コサイン送信フィルターを作成します。

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

増幅器のゲインを入力信号強度の関数としてプロットします。

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

arrayplot(gain)

18.5 dBm の入力強度に対して 1 dB のゲイン圧縮点が発生します。1 dB の圧縮が観測される点を増やすには、3 次インターセプト ポイント amplifier.IIP3 を増やします。

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 Characteristic');
Legend={'Simulated Results','Measurement'};
legend (Legend,'Location','north');

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

基準コンスタレーションと比較して、非線形増幅器の特性に起因するコンスタレーションの圧縮があることが明らかです。

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',{'Amplified signal','Filtered 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 Characteristic');
Legend={'Simulated Results','Measurement'};
legend (Legend,'Location','south');

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

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

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

function paChar = pa_performance_characteristics()

補助関数 pa_performance_characteristics により、増幅器のパフォーマンス特性が得られます。このデータは、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 の図 4 から抽出されています。

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 で使用するために、2 列目をゲインから Pout に変換します。

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

アルゴリズム

このオブジェクトは、Memoryless Nonlinearity ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

拡張機能

R2012a で導入