Main Content

sigma

動的システムの周波数応答の特異値

    説明

    [sv,wout] = sigma(sys) は、ベクトル wout の各周波数での動的システム モデル sys の周波数応答の特異値 sv を返します。プロットする周波数は、システム ダイナミクスに基づいて関数で自動的に決定されます。

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

    sv = sigma(sys,w,type) は、指定されたタイプの変更された特異値を返します。この構文は、入力と出力が同数のシステムにのみ使用できます。

    sigma(___) は、前述のすべての入力引数の組み合わせについて、sys の周波数応答の特異値を既定のプロット オプションでプロットします。sys が単入力単出力 (SISO) モデルの場合、特異値プロットはそのボード振幅応答と同じです。プロットをさらにカスタマイズするには、sigmaplot を使用します。

    • 複数の動的システムの特異値を同じプロット上にプロットするには、sys をモデルのコンマ区切りリストとして指定します。たとえば、sigma(sys1,sys2,sys3) は 3 つのモデルの特異値を同じプロット上にプロットします。

    • プロット内の各システムの色、ライン スタイル、およびマーカーを指定するには、システムごとに LineSpec 値を指定します。たとえば、sigma(sys1,LineSpec1,sys2,LineSpec2) は 2 つのモデルをプロットし、それらのプロット スタイルを指定します。LineSpec 値の指定の詳細については、sigmaplot を参照してください。

    すべて折りたたむ

    次の連続時間 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)

    MATLAB figure

    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

    MATLAB figure

    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")

    MATLAB figure

    ans = 
      Legend (Continuous, Discrete) with properties:
    
             String: {'Continuous'  'Discrete'}
           Location: 'northeast'
        Orientation: 'vertical'
           FontSize: 9
           Position: [0.6738 0.7968 0.2121 0.0789]
              Units: 'normalized'
    
      Use GET to show all properties
    
    

    離散時間システムの 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--')

    MATLAB figure

    最初の 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)

    MATLAB figure

    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)

    MATLAB figure

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

    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 に設定します。また、sigmaplot 関数を使用し、チャート オブジェクトのプロパティを変更することもできます。

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

    sp = sigmaplot(Gc,Gr);
    sp.FrequencyScale = 'linear'
    sp = 
      SigmaPlot with properties:
    
              Responses: [2x1 controllib.chart.response.SigmaResponse]
        Characteristics: [1x1 controllib.chart.options.CharacteristicsManager]
    
          FrequencyUnit: "rad/s"
         FrequencyScale: "linear"
          MagnitudeUnit: "dB"
         MagnitudeScale: "linear"
    
            GridVisible: off
                Visible: on
    
      Use GET to show all properties
    
    
    legend('Complex-coefficient model','Real-coefficient model');

    MATLAB figure

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

    入力引数

    すべて折りたたむ

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

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

    • sparss モデルまたは mechss モデルなどのスパース状態空間モデル。スパース モデルに対して、周波数グリッド w を指定しなければなりません。

    • 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 がモデルの配列である場合、プロットは同じ座標軸上に配列のすべてのモデルの応答を表示します。

    応答を計算する周波数。次のいずれかとして指定します。

    • 形式 {wmin,wmax} の cell 配列 — wmin から wmax の範囲の周波数で応答を計算します。wmaxsys のナイキスト周波数より大きい場合、応答はナイキスト周波数までしか計算されません。

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

    • [] — システム ダイナミクスに基づいて自動的に周波数を選択します。

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

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

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

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

    プロットする変更後の特異値のタイプ。次の値のいずれかとして指定します。

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

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

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

    依存関係

    type は、sys の入力と出力が同数の場合にのみ指定できます。

    出力引数

    すべて折りたたむ

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

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

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

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

    アルゴリズム

    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 より前に導入