Main Content

sectorplot

周波数の関数としてのセクター インデックスの計算またはプロット

説明

sectorplot(H,Q) は動的システム H と指定されたセクター行列 Q の相対セクター インデックスをプロットします。これらのインデックスはセクター境界がどの程度満たされているか (1 未満のインデックス) または違反されているか (指定された周波数で 1 より大きいインデックス) によって測定します。(セクター インデックスの意味の詳細についてはセクター境界とセクター インデックスについてを参照してください。) sectorplotH のダイナミクスに基づいて自動的に周波数の範囲と点の数を選択します。

次の式を正の部分と負の部分への対称行列 Q の直交分解にします。

Q=W1W1TW2W2T,W1TW2=0.

セクター インデックスのプロットは、W2TH に固有の安定した逆行列がある場合にのみ意味があります。この場合、セクター インデックスは次の式の特異値です。

(W1TH(jω))(W2TH(jω))1.

H が複素係数をもつモデルである場合、次のようになります。

  • 対数周波数スケールで、プロットは、1 つは正の周波数、もう 1 つは負の周波数の 2 つの分岐を示します。矢印は各分岐に対する周波数値の増加の方向を示します。

  • 線形周波数スケールで、プロットは、周波数値 0 を中心とする対称な周波数範囲をもつ 1 つの分岐を示します。

sectorplot(H,Q,w)w で指定した周波数のセクター インデックスをプロットします。

  • w が形式 {wmin,wmax} の cell 配列の場合、sectorplot はセクター インデックスを wmin から wmax の範囲の周波数でプロットします。

  • w が周波数のベクトルの場合、sectorplot はそれぞれの指定された周波数でセクター インデックスをプロットします。ベクトル w には負と正の両方の周波数を含めることができます。

sectorplot(H1,H2,...,HN,Q)sectorplot(H1,H2,...,HN,Q,w) は同じプロット上で複数の動的システム H1,H2,...,HN のセクター インデックスをプロットします。

sectorplot(H1,LineSpec1,...,HN,LineSpecN,Q)sectorplot(H1,LineSpec1,...,HN,LineSpecN,Q,w) は、プロット内の各システムに色、ライン スタイル、マーカーを指定します。

sectorplot(___,plotoptions) は、plotoptions で指定されたオプション セットを使用してセクター インデックスをプロットします。これらのオプションを使用して、コマンド ラインからプロットの外観をカスタマイズできます。plotoptions に指定する設定は、sectorplot を実行する MATLAB® セッションの基本設定をオーバーライドします。したがって、ローカルの基本設定にかかわらず、同じ外観の複数のプロットを生成するスクリプトを記述する場合、この構文が有用です。

[index,wout] = sectorplot(H,Q) はベクトル wout の各周波数でセクター インデックスを返します。出力 index は行列です。値 index(:,k) はセクター インデックスを周波数 w(k) で降順で返します。この構文はプロットを描画しません。

index = sectorplot(H,Q,w)w で指定される周波数でセクター インデックスを返します。

すべて折りたたむ

セクター インデックスをプロットして、次のように定義されるセクター内に G(s)=(s+2)/(s+1) の I/O 軌跡が収まる周波数を可視化します。

S={(y,u):0.1u2<uy<10u2}.

U/Y 領域では、このセクターは次の図の影付きの領域になります。

このセクターの Q 行列は次のようになります。

a = 0.1;  
b = 10; 
Q = [1 -(a+b)/2 ; -(a+b)/2 a*b];

軌跡 y(t)=Gu(t) は、すべての T > 0 について次が成り立つとき、セクター S 内にあります。

0.10Tu(t)2<0Tu(t)y(t)dt<100Tu(t)2dt.

周波数領域では、同じ条件を以下のように表すことができます。

(G(jω)1)HQ(G(jω)1)<0.

任意の周波数において G がこの条件を満たしているか違反しているかを確認するには、H = [G;1] のセクター インデックスをプロットします。

G = tf([1 2],[1 1]); 
sectorplot([G;1],Q)

プロットは、すべての周波数でセクター インデックスが 1 未満であることを示しています。したがって、G(s) の軌跡はすべての周波数において指定したセクター Q の範囲内に収まります。

特定のセクターについて、2 出力 2 入力システムのセクター プロットを調べます。システム H1 を読み込み、セクター Q を定義します。

load("sectorExampleSystem.mat","H1")
Q = [-5.12   2.16  -2.04   2.17
      2.16  -1.22  -0.28  -1.11
     -2.04  -0.28  -3.35   0.00
      2.17  -1.11   0.00   0.18];

プロットを作成します。

sectorplot(H1,Q)

H は 2 行 2 列なので、セクター プロットには 2 本のラインがあります。セクター インデックスの最大値は約 0.5 rad/s より低いところと、3 rad/s 前後の狭い帯域内で 1 を超えています。したがって、HQ で表されるセクター境界を満たしていません。

複素係数をもつモデルと実数係数をもつモデルの相対セクター インデックスを同じプロット上に作成します。

A = [-3.50,-1.25-0.25i;2,0];
B = [1;0];
C = [-0.75-0.5i,0.625-0.125i];
D = 0.5;
Hc = [ss(A,B,C,D);1];                   % create system with complex coefficients

load("sectorExampleSystem.mat","Hr")    % load system with real coefficients

Q = [1 0.1;0.1 -1];
sectorplot(Hc,Hr,Q)
legend('Complex-coefficient model','Real-coefficient model','Location','southwest')

対数周波数スケールで、プロットは、複素係数をもつモデルに対して、1 つは右向き矢印を使った正の周波数、もう 1 つは左向き矢印を使った負の周波数の 2 つの分岐を示します。両方の分岐で、矢印は周波数の増加の方向を示します。実数係数をもつモデルのプロットには常に、矢印をもたない 1 つの分岐のみが含まれます。

プロットする周波数スケールを線形に設定します。

opt = sectorplotoptions;
opt.FreqScale = 'Linear';

インデックスをプロットします。

sectorplot(Hc,Hr,Q,opt)
legend('Complex-coefficient model','Real-coefficient model','Location','southwest')

線形周波数スケールで、プロットは周波数値 0 を中心とする対称な周波数範囲をもつ 1 つの分岐を示します。複素係数をもつモデルとともに応答をプロットする場合、プロットは実数係数をもつモデルの負の周波数応答も示します。

入力引数

すべて折りたたむ

セクター境界に対して解析するモデル。tf モデル、ss モデル、または genss モデルなどの動的システム モデルとして指定します。H は連続または離散のどちらにすることもできます。H が調整可能なブロックまたは不確かさをもつブロックを含む一般化モデルの場合、sectorplotH の現在のノミナル値を解析します。

線形システム G のすべての I/O 軌跡 (u(t),y(t) が特定のセクターにあるかどうかを解析するには、H = [G;I] を使用します。ここで I = eyes(nu) のとき、nuG の入力の数です。

H がモデル配列の場合、sectorplot は同じプロット内の配列にあるすべてのモデルのセクター インデックスをプロットします。出力引数を使用してセクター インデックスのデータを取得する場合、H は単一モデルでなければなりません。

セクターの形状。次のように指定します。

  • 定数のセクター形状の場合は行列。Q は 1 辺が ny の対称正方行列です。ここで、nyH の出力数です。

  • 周波数依存のセクター形状の場合は LTI モデル。QQ(s)’ = Q(–s) を満たします。つまり、Q(s) は各周波数でエルミート行列と評価されます。

行列 Q は適切に定義された円錐セクターを表すために不定でなければなりません。不定行列には、正と負両方の固有値があります。

詳細については、セクター境界とセクター インデックスについてを参照してください。

インデックスを計算およびプロットする周波数。cell 配列 {wmin,wmax} または周波数値のベクトルとして指定します。

  • w が形式 {wmin,wmax} の cell 配列の場合、関数は wmin から wmax の範囲の周波数でインデックスを計算します。

  • w が周波数のベクトルの場合、関数は指定された各周波数でインデックスを計算します。たとえば、logspace を使用すると、対数的に等間隔な周波数値の行ベクトルを生成できます。

複素係数をもつモデルでは、プロットに対して周波数範囲 [wmin,wmax] を指定する場合、次のようになります。

  • 対数周波数スケールで、プロット周波数範囲は [wmin,wmax] に設定され、プロットは、1 つは正の周波数 [wmin,wmax]、もう 1 つは負の周波数 [–wmax,–wmin] の 2 つの分岐を示します。

  • 線形周波数スケールで、プロット周波数範囲は [–wmax,wmax] に設定され、プロットは、周波数値 0 を中心とする対称な周波数範囲をもつ 1 つの分岐を示します。

周波数はラジアン/TimeUnit 単位で指定します。ここで TimeUnit はモデルの TimeUnit プロパティです。

ライン スタイル、マーカー、色。1、2、または 3 文字の string または文字ベクトルとして指定します。文字が表示される順序は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定した場合、プロットはラインなしでマーカーのみを表示します。この引数の設定の詳細については、関数 plot の入力引数 LineSpec を参照してください。

例: 'r--' は赤い破線を指定します。

例: '*b' は青いアスタリスク マーカーを指定します。

例: 'y' は黄色いラインを指定します。

セクター インデックス プロットのオプション セット。SectorPlotOptions オブジェクトとして指定します。このオプション セットを使用してプロットの外観をカスタマイズできます。sectorplotoptions を使用して、オプション セットを作成します。plotoptions に指定する設定は、sectorplot を実行する MATLAB セッションの基本設定をオーバーライドします。したがって、ローカルの基本設定にかかわらず、同じ外観の複数のプロットを生成するスクリプトを記述する場合、plotoptions が有用です。

利用可能なオプションのリストについては、sectorplotoptions を参照してください。

出力引数

すべて折りたたむ

周波数の関数としてのセクター インデックス。行列として返されます。index には、これらを指定した場合は w、指定しない場合は wout の周波数で計算されたセクター インデックスが含まれます。index には w または wout にある値と同数の列と、H にある入力と同数の行が含まれます。このため、値 index(:,k) はセクター インデックスを周波数 w(k) で降順で返します。

たとえば、G が 3 入力 3 出力システム、Q が適切なセクター行列、w が 1 行 30 列の周波数のベクトルの場合、次の構文は 3 行 30 列の行列 index を返します。

H = [G;eyes(3)]
index = sectorplot(H,Q,w);

エントリ index(:,k) には H の 3 つのセクター インデックスが周波数 w(k) で降順で含まれます。

詳細については、セクター境界とセクター インデックスについてを参照してください。

インデックスが計算される周波数。ベクトルとして返されます。関数は、周波数範囲と点数をモデルのダイナミクスに基づいて自動的に選択します。

wout には複素係数をもつモデルの負の周波数値も含まれます。

バージョン履歴

R2016a で導入