Main Content

bodeplot

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

    説明

    bodeplot では、bode よりも広範囲のプロット カスタマイズ オプションを使用して、動的システム モデルのボードの振幅と位相をプロットできます。bodeplot を使用してプロット ハンドルを取得し、それを使用して軸座標のラベル、軸座標の範囲、軸座標の単位の変更など、プロットをカスタマイズできます。bodeplot を使用して、座標軸ハンドルで表される既存の座標軸のセット上にボード線図を描画することもできます。プロット ハンドルを使用して既存のボード線図をカスタマイズするには、次のようにします。

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

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

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

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

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

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

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

    h = bodeplot(AX,___) は、ハンドル AX をもつ現在の Figure の Axes または UIAxes オブジェクトにボード線図をプロットします。App Designer で bodeplot を使用してアプリを作成する場合にこの構文を使用します。

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

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

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

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

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

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

    すべて折りたたむ

    この例では、プロット ハンドルを使用して周波数単位を Hz に変更し、位相プロットをオフにします。

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

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

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

    単位を Hz に変更して、位相プロットを抑制します。そのためには、setoptions を使用してプロット ハンドル h のプロパティを編集します。

    setoptions(h,'FreqUnits','Hz','PhaseVisible','off');

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    setoptions を呼び出すと、ボード線図は自動的に更新されます。

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

    p = bodeoptions('cstprefs');

    周波数単位を Hz に設定してオプション セットのプロパティを変更し、位相プロットを非表示にします。

    p.FreqUnits = 'Hz';
    p.PhaseVisible = 'off';
    bodeplot(sys,p);

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

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

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

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

    opts = bodeoptions;

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

    opts.Title.FontSize = 15;
    opts.Title.Color = [1 0 0];
    opts.FreqUnits = 'Hz';

    次に、オプション セット opts を使用してボード線図を作成します。

    bodeplot(tf(1,[1,1]),opts);

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents untitled1. Axes object 2 contains an object of type line. This object represents untitled1.

    opts は固定のオプション セットで開始されるため、プロットの結果は 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]);

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

    plotoptions = bodeoptions;
    plotoptions.Grid = 'on';
    plotoptions.FreqScale = 'linear';
    plotoptions.Title.String = 'Bode Plot of Transfer Function';

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

    bodeplot(sys,plotoptions)

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

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

    この例では、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 = bodeplot(sys_mimo);
    p = getoptions(h)
    p =
    
                       FreqUnits: 'rad/s'
                       FreqScale: 'log'
                        MagUnits: 'dB'
                        MagScale: 'linear'
                      MagVisible: 'on'
                 MagLowerLimMode: 'auto'
                      PhaseUnits: 'deg'
                    PhaseVisible: 'on'
                   PhaseWrapping: 'off'
                   PhaseMatching: 'off'
               PhaseMatchingFreq: 0
        ConfidenceRegionNumberSD: 1
                     MagLowerLim: 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: {6x1 cell}
                        XLimMode: {3x1 cell}
                        YLimMode: {6x1 cell}
    

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

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

    Figure contains 18 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys\_mimo. Axes object 2 contains an object of type line. This object represents sys\_mimo. Axes object 3 contains an object of type line. This object represents sys\_mimo. Axes object 4 contains an object of type line. This object represents sys\_mimo. Axes object 5 contains an object of type line. This object represents sys\_mimo. Axes object 6 contains an object of type line. This object represents sys\_mimo. Axes object 7 with title From: In(2) contains an object of type line. This object represents sys\_mimo. Axes object 8 contains an object of type line. This object represents sys\_mimo. Axes object 9 contains an object of type line. This object represents sys\_mimo. Axes object 10 contains an object of type line. This object represents sys\_mimo. Axes object 11 contains an object of type line. This object represents sys\_mimo. Axes object 12 contains an object of type line. This object represents sys\_mimo. Axes object 13 with title From: In(3) contains an object of type line. This object represents sys\_mimo. Axes object 14 contains an object of type line. This object represents sys\_mimo. Axes object 15 contains an object of type line. This object represents sys\_mimo. Axes object 16 contains an object of type line. This object represents sys\_mimo. Axes object 17 contains an object of type line. This object represents sys\_mimo. Axes object 18 contains an object of type line. This object represents sys\_mimo.

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

    この例では、1 ラジアン/秒の位相が 150 度になるようにシステム応答の位相を一致させます。

    最初に、プロット ハンドル h を使用して伝達関数システムのボード線図を作成します。

    sys = tf(1,[1 1]); 
    h = bodeplot(sys);

    getoptions を使用してプロットのプロパティを取得します。位相が指定の周波数と一致するように、プロパティ PhaseMatchingFreq とプロパティ PhaseMatchingValue を変更します。

    p = getoptions(h); 
    p.PhaseMatching = 'on'; 
    p.PhaseMatchingFreq = 1; 
    p.PhaseMatchingValue = 150;

    setoptions を使用してプロットを更新します。

    setoptions(h,p);

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

    最初のボード線図は、1 rad/s の周波数で -45 度の位相です。1 rad/s で位相が約 150 度になるように位相マッチング オプションを設定すると、2 番目のボード線図が出力されます。ただし、位相の取り得る値は -45 + N*360 であることに注意してください。ここで、N は整数です。そのため、プロットは可能な位相の中で最も近い値、つまり 315 度 (計算式は 1*360-45=315oEquation of how the allowable phase is calculated) に設定されます。

    この例では、2 つおよび 6 つの状態をもつ 2 つの同定された状態空間モデルの周波数応答を、その 2 σ の信頼領域と比較します。

    同定された状態空間モデル データを読み込み、n4sid を使用して 2 つのモデルを推定します。n4sid を使用するには、System Identification Toolbox のライセンスが必要です。

    load iddata1
    sys1 = n4sid(z1,2); 
    sys2 = n4sid(z1,6);

    2 つのシステムのボード線図を作成します。

    bodeplot(sys1,'r',sys2,'b');
    legend('sys1','sys2');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 contains 2 objects of type line. These objects represent sys1, sys2.

    プロットから、どちらのモデルもデータに約 70% 適合することがわかります。しかし sys2 では、周波数応答の不確かさが特にナイキスト周波数近くで高くなります。ここで、linspace を使用して周波数のベクトルを作成し、周波数ベクトル w を使用してボード線図をプロットします。

    w = linspace(8,10*pi,256);
    h = bodeplot(sys1,sys2,w);
    legend('sys1','sys2');

    setoptions を使用して位相の一致をオンにし、信頼領域の標準偏差を指定します。

    setoptions(h,'PhaseMatching','on','ConfidenceRegionNumberSD',2);

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 contains 2 objects of type line. These objects represent sys1, sys2.

    showconfidence コマンドを使用してボード線図に信頼領域を表示できます。

    showConfidence(h)
    

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

    データを読み込み、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 = bodeoptions;  
    plotoptions.PhaseMatching = 'on';
    plotoptions.Grid = 'on';
    bodeplot(sys_p,sys_np,w,plotoptions);
    legend('Parametric Model','Non-Parametric model');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model. Axes object 2 contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model.

    入力引数

    すべて折りたたむ

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

    • tf (Control System Toolbox)zpk (Control System Toolbox)ss (Control System Toolbox) モデルなどの連続時間または離散時間の数値 LTI モデル。

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

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

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

      • 不確かさをもつ制御設計ブロックの場合、関数はモデルのノミナル値とランダム サンプルをプロットします。

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

    • idtfidssidproc モデルなどの同定された LTI モデル。このようなモデルの場合、関数は信頼区間をプロットし、周波数応答の標準偏差を返すこともできます。同定されたモデルのボード線図を参照してください。

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

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

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

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

    y

    黄色

    m

    マゼンタ

    c

    シアン

    r

    g

    b

    w

    k

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

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

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

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

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

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

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

    出力引数

    すべて折りたたむ

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

    バージョン履歴

    R2006a より前に導入