Main Content

nicholsplot

追加のプロット カスタマイズ オプションを使用してニコルス周波数応答をプロットする

    説明

    nicholsplot では、nichols よりも広範囲のプロット カスタマイズ オプションを使用して、動的システム モデルのニコルス周波数応答をプロットできます。nicholsplot を使用してプロット ハンドルを取得し、それを使用して軸座標のラベル、軸座標の範囲、軸座標の単位の変更など、プロットをカスタマイズできます。nicholsplot を使用して、座標軸ハンドルで表される既存の座標軸のセット上にニコルス線図を描画することもできます。プロット ハンドルを使用して既存のニコルス線図をカスタマイズするには、次の手順に従います。

    1. プロット ハンドルを取得

    2. getoptions を使用してオプション セットを取得

    3. setoptions を使用してプロットを更新し、必要なオプションを変更

    詳細については、コマンド ラインからの応答プロットのカスタマイズを参照してください。既定のオプションを使用してニコルス線図を作成するか、ニコルス周波数応答データを抽出するには、nichols を使用します。

    h = nicholsplot(sys) は、動的システム モデル sys のニコルス周波数応答をプロットし、プロットのプロット ハンドル h を返します。getoptions コマンドと setoptions コマンドを使ってプロットをカスタマイズするために、このハンドル h を使用できます。sys が多入力多出力 (MIMO) モデルである場合、nicholsplot はニコルス線図のグリッドを生成し、各プロットは 1 組の I/O の周波数応答を示します。

    h = nicholsplot(sys1,sys2,...,sysN) は、複数の動的システム sys1,sys2,…,sysN のニコルス周波数応答を同じプロット上にプロットします。この構文を使用するには、すべてのシステムで入力数と出力数が同じでなければなりません。

    h = nicholsplot(sys1,LineSpec1,...,sysN,LineSpecN) は各システムのニコルス応答のライン スタイル、マーカー タイプ、および色を設定します。この構文を使用するには、すべてのシステムで入力数と出力数が同じでなければなりません。

    h = nicholsplot(___,w) は、w の周波数で指定された周波数のニコルス応答をプロットします。

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

    • w が周波数のベクトルの場合、nicholsplot はそれぞれの指定された周波数で応答をプロットします。

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

    対数間隔の周波数ベクトルを作成するためには、logspace を参照してください。

    h = nicholsplot(AX,___) は、ハンドル AX をもつ現在の Figure の Axes オブジェクトにニコルス応答をプロットします。

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

    すべて折りたたむ

    この例では、プロット ハンドルを使用して、タイトルを変更し、グリッドをオンにして、軸の範囲を設定します。

    5 つの状態をもつランダムな状態空間モデルを生成し、プロット ハンドル h をもつニコルス線図を作成します。

    rng("default")
    sys = rss(5);
    h = nicholsplot(sys);

    タイトルを変更し、グリッドを有効にして、軸の範囲を設定します。そのためには、setoptions を使用してプロット ハンドル h のプロパティを編集します。

    Title.String = 'Nichols Frequency Response';
    setoptions(h,'Title',Title,'Grid','on', 'XLim',{[-2,4]},'YLim',{[3.3,4.3]});

    setoptions を呼び出すと、ニコルス線図は自動的に更新されます。

    または、nicholsoptions コマンドを使用して、必要なプロット オプションを指定することもできます。最初に、ツールボックス基本設定に基づいてオプション セットを作成します。

    plotoptions = nicholsoptions('cstprefs');

    オプション セットの必要なプロパティを変更します。

    plotoptions.Title.String = 'Nichols Frequency Response';
    plotoptions.Grid = 'on';
    plotoptions.XLim = {[-2,4]};
    plotoptions.YLim = {[3.3,4.3]};
    nicholsplot(sys,plotoptions);

    同じオプション セットを使用して、同じカスタマイズを使用する複数のニコルス線図を作成できます。独自のツールボックス基本設定によっては、得られるプロットはこのプロットの外観と異なる場合があります。明示的に設定したプロパティ (この例では、TitleGridXLim、および YLim) のみが、ツールボックス基本設定をオーバーライドします。

    この例では、タイトルに 15 ポイントの赤いテキストを使用するニコルス線図を作成します。このプロットは、それを生成する MATLAB セッションの基本設定にかかわらず、外観が同じになります。

    最初に、nicholsoptions を使用して既定のオプション セットを作成します。

    plotoptions = nicholsoptions;

    次に、オプション セット plotoptions の必要なプロパティを変更します。

    plotoptions.Title.FontSize = 15;
    plotoptions.Title.Color = [1 0 0];
    plotoptions.FreqUnits = 'Hz';
    plotoptions.Grid = 'on';

    これで、オプション セット plotoptions を使用してニコルス線図を作成します。

    nicholsplot(tf(1,[1,1]),{0,15},plotoptions);

    plotoptions は固定のオプション セットで開始されるため、プロットの結果は MATLAB セッションのツールボックス基本設定とは独立したものになります。

    この例では、次の連続時間 SISO 動的システムのニコルス線図を作成します。次に、グリッドをオンにして、プロットの名前を変更します。

    sys(s)=s2+0.1s+7.5s4+0.12s3+9s2.Continuous-time SISO dynamic system

    伝達関数 sys を作成します。

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

    次に、nicholsoptions を使用してオプション セットを作成し、必要なプロット プロパティを変更します。

    plotoptions = nicholsoptions;
    plotoptions.Grid = 'on';
    plotoptions.Title.String = 'Nichols Plot of Transfer Function';

    カスタムのオプション セット plotoptions を使用してニコルス線図を作成します。

    nicholsplot(sys,plotoptions)

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

    この例では、3 つの入力、3 つの出力および 3 つの状態をもつ MIMO 状態空間モデルについて考えます。周波数単位 Hz を使用してニコルス線図を作成し、グリッドをオンにします。

    MIMO 状態空間モデル sys_mimo を作成します。

    J = [8 -3 -3; -3 8 -3; -3 -3 8];
    F = 0.2*eye(3);
    A = -J\F;
    B = inv(J);
    C = eye(3);
    D = 0;
    sys_mimo = ss(A,B,C,D);
    size(sys_mimo)
    State-space model with 3 outputs, 3 inputs, and 3 states.
    

    プロット ハンドル h を使ってニコルス線図を作成し、利用可能なオプションのリストに対して getoptions を使用します。

    h = nicholsplot(sys_mimo);

    p = getoptions(h)
    p =
    
                  FreqUnits: 'rad/s'
            MagLowerLimMode: 'auto'
                MagLowerLim: 0
                   MagUnits: 'dB'
                 PhaseUnits: 'deg'
              PhaseWrapping: 'off'
              PhaseMatching: 'off'
          PhaseMatchingFreq: 0
         PhaseMatchingValue: 0
        PhaseWrappingBranch: -180
                 IOGrouping: 'none'
                InputLabels: [1x1 struct]
               OutputLabels: [1x1 struct]
               InputVisible: {3x1 cell}
              OutputVisible: {3x1 cell}
                      Title: [1x1 struct]
                     XLabel: [1x1 struct]
                     YLabel: [1x1 struct]
                  TickLabel: [1x1 struct]
                       Grid: 'off'
                  GridColor: [0.1500 0.1500 0.1500]
                       XLim: {3x1 cell}
                       YLim: {3x1 cell}
                   XLimMode: {3x1 cell}
                   YLimMode: {3x1 cell}
    

    setoptions を使用して必要なカスタマイズでプロットを更新します。

    setoptions(h,'FreqUnits','Hz','Grid','on');

    setoptions を呼び出すと、ニコルス線図は自動的に更新されます。MIMO モデルの場合、nicholsplot はニコルス線図の配列を生成し、各プロットは 1 組の I/O の周波数応答を表示します。

    この例では、入力/出力データから同定されたパラメトリック モデルのニコルス応答を、同じデータを使用して同定されたノンパラメトリック モデルと比較します。データに基づいて、パラメトリック モデルとノンパラメトリック モデルを同定します。

    データを読み込み、tfest および spa をそれぞれ使用してパラメトリック モデルとノンパラメトリック モデルを作成します。

    load iddata2 z2;
    w = linspace(0,10*pi,128);
    sys_np = spa(z2,[],w);
    sys_p = tfest(z2,2);

    spatfest には System Identification Toolbox™ ソフトウェアが必要です。モデル sys_np はノンパラメトリックと同定されたモデルで、sys_p はパラメトリックと同定されたモデルです。

    位相の一致とグリッドをオンにするオプション セットを作成します。次に、このオプション セットを使用して両方のシステムを含むニコルス線図を作成します。

    plotoptions = nicholsoptions;  
    plotoptions.PhaseMatching = 'on';
    plotoptions.Grid = 'on';
    plotoptions.XLim = {[-240,0]};
    h = nicholsplot(sys_p,'r.-.',sys_np,'b.-.',w,plotoptions);
    legend('Parametric Model','Non-Parametric model');

    入力引数

    すべて折りたたむ

    動的システム。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 がモデルの配列である場合、関数は同じ座標軸上に配列のすべてのモデルの周波数応答をプロットします。

    ライン スタイル、マーカー、色。記号を含む文字ベクトルまたは string として指定します。記号が表示される順序は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定した場合、プロットはラインなしでマーカーのみを表示します。

    例: '--or' は円形マーカー付きの赤い破線

    ライン スタイル説明
    -実線
    --破線
    :点線
    -.一点鎖線
    マーカー説明
    'o'
    '+'プラス記号
    '*'アスタリスク
    '.'
    'x'x 印
    '_'水平線
    '|'垂直線
    's'正方形
    'd'菱形
    '^'上向き三角形
    'v'下向き三角形
    '>'右向き三角形
    '<'左向き三角形
    'p'星形五角形
    'h'星形六角形
    説明

    y

    黄色

    m

    マゼンタ

    c

    シアン

    r

    g

    b

    w

    k

    ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定せず、現在の座標軸が直交座標軸の場合、nicholsplot は現在の座標軸上でプロットします。AX を使用して特定の座標軸にプロットします。

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

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

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

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

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

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

    出力引数

    すべて折りたたむ

    プロット ハンドル。handle オブジェクトとして返されます。getoptions および setoptions を使用してニコルス線図のプロパティを取得および設定するには、ハンドル h を使用します。利用可能なオプションのリストについては、コマンド ラインからの応答プロットのカスタマイズ"プロパティと値のリファレンス" の節を参照してください。

    バージョン履歴

    R2006a より前に導入