Main Content

nichols

動的システムのニコルス応答

説明

[mag,phase,wout] = nichols(sys) は、動的システム モデル sys の周波数応答を計算し、ベクトル wout の各周波数での応答の振幅と位相を返します。関数はシステム ダイナミクスに基づいて wout の周波数を自動的に決定します。

[mag,phase,wout] = nichols(sys,w) は、w で指定された周波数での応答データを返します。周波数範囲または周波数のベクトルを指定できます。

nichols(___) は、sys の周波数応答のニコルス線図をプロットします。プロットは、システム応答の振幅 (dB 単位) と位相 (度単位) を周波数の関数として表示します。ニコルス線図のグリッド ラインを既存の SISO ニコルス線図に重ね合わせる場合は、ngrid を使用します。プロットをさらにカスタマイズするには、nicholsplot を使用します。

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

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

すべて折りたたむ

次のシステムのニコルス グリッド ライン付きのニコルス応答をプロットします。

H(s)=-4s4+48s3-18s2+250s+600s4+30s3+282s2+525s+60.

H = tf([-4 48 -18 250 600],[1 30 282 525 60]);
nichols(H)
ngrid

MATLAB figure

指定された周波数範囲でニコルス線図を作成します。周波数の特定の範囲でダイナミクスに焦点を合わせるときにこの方法を使用します。

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

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

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

w = 1:0.5:100;
nichols(H,w,'.-')

MATLAB figure

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

連続時間システムの周波数応答を、同一のニコルス線図にある等価な離散化システムと比較します。

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

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

両方のシステムを表示するニコルス線図を作成します。

nichols(H,Hd)

MATLAB figure

入力引数 LineSpec を使って、ニコルス線図に各システムのライン スタイル、色、またはマーカーを指定します。

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

MATLAB figure

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

SISO システムの周波数応答の振幅と位相を計算します。

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

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,wout] = nichols(H);

H は SISO モデルなので、最初の 2 つの次元 magphase はどちらも 1 です。3 番目の次元は wout の周波数点の数です。

size(mag)
ans = 1×3

     1     1   110

length(wout)
ans = 
110

したがって、mag の 3 番目の次元の各エントリは、wout の対応する周波数における応答の振幅を提供します。

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

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

このシステムでは、nichols が各 I/O チャネルの周波数応答を個別のプロットとして単一の Figure 内にプロットします。

nichols(H)

MATLAB figure

1 ~ 10 ラジアンの 20 の周波数でこれらの応答の振幅と位相を計算します。

w = logspace(0,1,20);
[mag,phase] = nichols(H,w);

magphase は 3 次元配列で、最初の 2 つの次元は H の出力次元と入力次元に対応し、3 番目の次元は周波数の数です。たとえば、mag の次元を確認します。

size(mag)
ans = 1×3

     2     3    20

したがって、たとえば mag(1,3,10) は、w 内の 10 番目の周波数で計算された、3 番目の入力から最初の出力への応答の振幅です。同様に、phase(1,3,10) には同じ応答の位相が含まれています。

複素係数をもつモデルと実数係数をもつモデルのニコルス線図を同じプロット上に作成します。

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(7);
nichols(Gc,Gr)
legend('Complex-coefficient model','Real-coefficient model','Location','southwest')

MATLAB figure

ans = 
  Legend (Complex-coefficient model, Real-coefficient model) with properties:

         String: {'Complex-coefficient model'  'Real-coefficient model'}
       Location: 'southwest'
    Orientation: 'vertical'
       FontSize: 9
       Position: [0.1491 0.1564 0.3785 0.0789]
          Units: 'normalized'

  Use GET to show all properties

複素係数をもつモデルの場合、nichols には正と負の両方の周波数で構成される等高線が表示されます。実数係数をもつモデルの場合、複素係数をもつモデルが存在していても、プロットには正の周波数のみが表示されます。曲線をクリックして、正と負の周波数に対応するセクションと値をさらに調査できます。

入力引数

すべて折りたたむ

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

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

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

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

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

複素係数をもつモデルでは、プロットに対して周波数範囲 [wmin,wmax] を指定する場合、プロットには正の周波数 [wmin,wmax] と負の周波数 [–wmax,–wmin] の両方で構成される等高線が表示されます。

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

出力引数

すべて折りたたむ

システム応答の振幅 (絶対単位)。3 次元配列として返されます。この配列の次元は (システム出力数) × (システム入力数) × (周波数点数) です。

  • SISO システムの場合、mag(1,1,k)w または woutk 番目の周波数における応答の振幅を提供します。例については、ニコルス応答の振幅と位相データを参照してください。

  • MIMO システムの場合、mag(i,j,k)j 番目の入力から i 番目の出力への k 番目の周波数における応答の振幅を提供します。例については、MIMO システムのニコルス線図を参照してください。

振幅を絶対単位からデシベルに変換するには、次を使用します。

magdb = 20*log10(mag)

システム応答の位相 (度単位)。3 次元配列として返されます。この配列の次元は (出力数) × (入力数) × (周波数点数) です。

  • SISO システムの場合、phase(1,1,k)w または woutk 番目の周波数で応答の位相を提供します。例については、ニコルス応答の振幅と位相データを参照してください。

  • MIMO システムの場合、phase(i,j,k)j 番目の入力から i 番目の出力への k 番目の周波数における応答の位相を提供します。例については、MIMO システムのニコルス線図を参照してください。

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

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

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

バージョン履歴

R2006a より前に導入