Main Content

sigma

動的システムの特異値プロット

    説明

    sigma(sys) は、動的システム sys の周波数応答の特異値をプロットします。sigma は、システム ダイナミクスに基づいてプロットする周波数を自動的に決定します。

    sys が単入力単出力 (SISO) モデルの場合、特異値プロットはそのボード振幅応答と同じです。

    sysNu 入力および Ny 出力をもつ多入力多出力 (MIMO) モデルの場合、特異値プロットは周波数応答行列の各特異値に対応する min(Nu,Ny) ラインをプロットに示します。MIMO システムの場合、特異値プロットはボード振幅応答を拡張するので、ロバスト解析に便利です。

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

    • 対数周波数スケールで、プロットは、1 つは正の周波数、もう 1 つは負の周波数の 2 つの分岐を示します。プロットは、各分岐に対する周波数値の増加の方向を示す矢印も表示します。複素係数をもつモデルの特異値プロットを参照してください。

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

    sigma(sys1,sys2,...,sysN) は、複数の動的システムの応答の特異値を同じプロット上にプロットします。すべてのシステムは入力数と出力数が同じでなければなりません。

    sigma(sys1,LineSpec1,...,sysN,LineSpecN) はプロット内の各システムの色、ライン スタイルおよびマーカーを指定します。

    sigma(___,w) は、w で指定された周波数のシステム応答の特異値をプロットします。

    • w が形式 {wmin,wmax} の cell 配列の場合、sigmawmin から wmax の範囲の周波数で応答をプロットします。

    • w が周波数のベクトルの場合、sigma はそれぞれの指定された周波数で応答をプロットします。ベクトル w には負と正の両方の周波数を含めることができます。

    w は、前述の構文のすべての入力引数の組み合わせで使用できます。

    sigma(___,type) は、type 引数に基づいて変更された特異値応答をプロットします。type は、以下のように指定します。

    • 1 は周波数応答 H-1 の特異値をプロットします。ここで H は sys の周波数応答です。

    • 2 は周波数応答 I+H の特異値をプロットします。

    • 3 は周波数応答 I+H-1 の特異値をプロットします。

    "正方システム"、つまり入力と出力が同数のシステムに使用できるのは type 引数のみです。

    [sv,wout] = sigma(sys) は、ベクトル wout の各周波数での応答の特異値を返します。出力 sv は行列です。値 sv(:,k) は特異値を周波数 wout(k) で降順で与えます。関数はシステム ダイナミクスに基づいて wout の周波数を自動的に決定します。この構文はプロットを描画しません。

    [sv,wout] = sigma(sys,w) は、w で指定された周波数での特異値 sv を返します。

    • w が形式 {wmin,wmax} の cell 配列の場合、woutwmin から wmax の範囲の周波数を含みます。

    • w が周波数のベクトルである場合、wout = w です。

    すべて折りたたむ

    次の連続時間 SISO 動的システムの特異値プロットを作成します。

    H(s)=s2+0.1s+7.5s4+0.12s3+9s2

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    sigma(H)

    sigma はシステム ダイナミクスに基づいてプロット範囲を自動的に選択します。

    指定された周波数範囲で特異値プロットを作成します。周波数の特定の範囲でダイナミクスに焦点を合わせるときにこの方法を使用します。

    H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]);
    sigma(H,{1,100})
    grid on

    cell 配列 {1,100} は、プロットに最小および最大の周波数値を指定します。このように周波数の範囲を指定すると、関数は周波数応答データの中間点を選択します。

    あるいは、周波数応答の評価とプロットに使用する周波数点のベクトルを指定します。

    w = [1 5 10 15 20 23 31 40 44 50 85 100];
    sigma(H,w,'.-')
    grid on

    sigma は、指定された周波数のみで周波数応答をプロットします。

    連続時間システムの周波数応答を、同一の特異値プロットにある等価な離散化システムと比較します。

    連続時間動的システムと離散時間動的システムを作成します。

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    Hd = c2d(H,0.5,'zoh');

    両方のシステムを表示するプロットを作成します。

    sigma(H,Hd)
    legend("Continuous","Discrete")

    離散時間システムの sigma プロットには、システムのナイキスト周波数をマークする垂直線が含まれます。

    入力引数 LineSpec を使って、sigma プロットに各システムのライン スタイル、色、またはマーカーを指定します。

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    Hd = c2d(H,0.5,'zoh');
    sigma(H,'r',Hd,'b--')

    最初の LineSpec である 'r' は、H の応答に赤の実線を指定します。2 番目の LineSpec である 'b--' は、Hd の応答に青の破線を指定します。

    SISO システムの周波数応答の特異値を計算します。

    周波数を指定しない場合、sigma はシステム ダイナミクスに基づいて周波数を選択し、これを 2 番目の出力引数に返します。

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    [sv,wout] = sigma(H);

    H は SISO モデルなので、最初の次元 sv は 1 です。2 番目の次元は wout の周波数の数です。

    size(sv)
    ans = 1×2
    
         1    40
    
    
    length(wout)
    ans = 40
    

    したがって、sv の 2 番目の次元の各エントリは、wout の対応する周波数における応答の特異値を提供します。

    この例では 2 出力、3 入力のシステムを作成します。

    rng(0,'twister'); % For reproducibility
    H = rss(4,2,3);

    このシステムの場合、sigma は周波数応答行列の特異値を同じプロット上にプロットします。

    sigma(H)

    1 ~ 10 ラジアンの 20 の周波数で特異値を計算します。

    w = logspace(0,1,20);
    sv = sigma(H,w);

    sv は、行が周波数応答行列の特異値に対応し、列が周波数値である行列です。次元を確認します。

    size(sv)
    ans = 1×2
    
         2    20
    
    

    したがって、たとえば sv(:,10) は、w 内の 10 番目の周波数で計算された応答の特異値です。

    次の 2 つの入力、2 つの出力の動的システムについて考えます。

    H(s)=[03ss2+s+10s+1s+52s+6].

    H(s) および I + H(s) の特異値応答を計算します。

    H = [0, tf([3 0],[1 1 10]) ; tf([1 1],[1 5]), tf(2,[1 6])];
    [svH,wH] = sigma(H);
    [svIH,wIH] = sigma(H,[],2);

    最後のコマンドの入力の 2 により、2 番目の応答タイプ、I + H(s) を選択しています。ベクトル svH とベクトル svIH には、wH および wIH における周波数での特異値応答データが含まれます。

    両方のシステムの特異値応答をプロットします。

    subplot(211)
    sigma(H)
    subplot(212)
    sigma(H,[],2)

    複素係数をもつモデルと実数係数をもつモデルの特異値プロットを同じプロット上に作成します。

    rng(0)
    A = [-3.50,-1.25-0.25i;2,0];
    B = [1;0];
    C = [-0.75-0.5i,0.625-0.125i];
    D = 0.5;
    Gc = ss(A,B,C,D);
    Gr = rss(4);
    sigma(Gc,Gr)
    legend('Complex-coefficient model','Real-coefficient model')

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

    プロットを右クリックして [プロパティ] を選択すると、プロットの周波数スケールを変更できます。[プロパティ エディター] ダイアログの [単位] タブで、周波数スケールを linear scale に設定します。また、関数 sigmaplotsigmaoptions オブジェクトとともに使用して、カスタマイズされたプロットを作成することもできます。

    opt = sigmaoptions;
    opt.FreqScale = 'Linear';

    カスタマイズされたオプションを使用してプロットを作成します。

    sigmaplot(Gc,Gr,opt)
    legend('Complex-coefficient model','Real-coefficient model')

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

    入力引数

    すべて折りたたむ

    動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

    • tfzpkss モデルなどの連続時間または離散時間の数値 LTI モデル。

    • genssuss (Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。(不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。)

      • 調整可能な制御設計ブロックの場合、関数は周波数応答データをプロットする処理と返す処理の両方においてモデルをその現在の値で評価します。

      • 不確かさをもつ制御設計ブロックの場合、関数はモデルのノミナル値とランダム サンプルをプロットします。出力引数を使用する場合、関数はノミナル モデルのみの周波数応答データを返します。

    • frd モデルなどの周波数応答データ モデル。このようなモデルの場合、関数はモデルで定義されている周波数での応答をプロットします。

    • idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox) モデルなどの同定された LTI モデル。同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。

    sys がモデルの配列である場合、関数は同じ座標軸上に配列のすべてのモデルの周波数応答をプロットします。

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

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

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

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

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

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

    • w が周波数のベクトルの場合、関数は指定された各周波数で応答を計算します。たとえば、logspace を使用すると、対数的に等間隔な周波数値の行ベクトルを生成できます。ベクトル w には正と負の両方の周波数を含めることができます。

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

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

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

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

    変更された特異値をプロットするオプション。次のオプションのいずれかとして指定します。

    • 1 は周波数応答 H-1 の特異値をプロットします。ここで H は sys の周波数応答です。

    • 2 は周波数応答 I+H の特異値をプロットします。

    • 3 は周波数応答 I+H-1 の特異値をプロットします。

    "正方システム"、つまり入力と出力が同数のシステムに使用できるのは type 引数のみです。

    出力引数

    すべて折りたたむ

    周波数応答の特異値 (絶対単位)。行列として返されます。sv には、周波数を指定した場合は w の周波数、指定しなかった場合は wout の周波数で計算された特異値が含まれます。入力 Nu、出力 Nysys システムの場合、sv には min(Nu,Ny) 行および w または wout にある値と同数の列が存在します。

    関数がシステム応答を返す周波数。列ベクトルとして返されます。入力引数 w を使用して周波数を指定する場合を除き、関数はモデル ダイナミクスに基づいて周波数値を選択します。

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

    周波数値は TimeUnit ごとのラジアンです。ここで、TimeUnitsysTimeUnit プロパティ値です。

    ヒント

    • 追加のプロット カスタマイズ オプションが必要な場合は、代わりに sigmaplot を使用します。

    アルゴリズム

    sigma は MATLAB® 関数 svd を使用して、複素数周波数応答の特異値を計算します。

    • frd モデルの場合、sigma は、周波数 sys.Frequency での sys.ResponseData の特異値を計算します。

    • 伝達関数 H(s) をもつ連続時間 tf モデル、ss モデル、または zpk モデルの場合、sigma は、H(jω) の特異値を周波数 ω の関数として計算します。

    • 伝達関数 H(z) およびサンプル時間 Ts をもつ離散時間 tf モデル、ss モデル、または zpk モデルの場合、sigma は、次に対する特異値を計算します。

      H(ejωTs)

      これを 0 からナイキスト周波数 ωN = π/Ts までの周波数 ω に対して実行します。

    バージョン履歴

    R2006a より前に導入