# nyquist

ナイキスト線図

## 呼び出しの手順

                nyquist( sl,[fmin,fmax] [,step] [,comments] [,symmetry])
                nyquist( sl, frq [,comments] [,symmetry])
                nyquist(frq,db,phi [,comments] [,symmetry])
                nyquist(frq, repf [,comments] [,symmetry])

## 引数

sl

  連続または離散時間 SIMO 線形システム ( 参照: syslin).

fmin,fmax

  スカラー (周波数範囲の境界(単位:Hz))

step

  real (対数単位の離散化増分), 指定されない場合,適応型離散化が行われます.

commments

  文字列ベクトル (キャプション).

symmetry

  論理値, デフォルト値は %t.

frq

  周波数のベクトルまたは行列 (単位: Hz) (各行が`sl`の各出力に対応).

db,phi

  ゲイン(単位:dB)および位相(単位:度)の行列 (各行が`sl`の各出力に対応).

repf

  周波数応答を表す複素行列. (各行が`sl`の各出力に対応).

## 説明

ナイキスト線図は, `sl`の周波数応答の虚部と実部の関係をプロットします. `symmetry`引数がtrueまたは省略された場合, ナイキスト線図は対称グラフを表示します(正および負の周波数).

連続時間システムの場合, `sl(2*%i*%pi*w)` が プロットされます. 離散時間システムまたは離散化されたシステムの場合, `sl(exp(2*%i*%pi*w*fd)`が使用されます. (離散時間システムの場合は `fd=1`, 離散化されたシステムの場合は `fd=sl('dt')`)

`sl` は 連続時間または離散時間 SIMOシステム (`syslin`参照)と することができます. 多出力系の場合,各出力は異なる記号でプロットされます.

周波数は範囲の境界 `fmin,fmax` (単位: Hz) または行ベクトル (多出力系の場合は行列) `frq` で指定すします

`step` は (対数表現の) 離散刻みです. (デフォルト値の選択については `calfrq` を参照).

`comments` は(キャプション)文字列のベクトルです.

`db,phi` はゲイン(単位:dB)および位相(単位:度)の 行列です (各行が各応答に対応します).

`repf` は複素行列です. 各行が各応答に対応します.

`fmin` および`fmax` のデフォルト値は, `sl` が連続時間系の場合に `1.d-3`,`1.d+3`, `sl` が離散時間系の場合に`1.d-3`, `0.5`/sl.dt (ナイキスト周波数) となります.

周波数の自動離散化はcalfrq により行われます.

選択された点における周波数の値を得るには, データティップマネージャを 有効にし,ナイキスト線図の任意の点をクリックします.

## グラフィックエンティティの構築

`nyquist` 関数は各SISOシステムの複合オブジェクトを 作成します. 以下のコードにより,i番目のシステムの複合オブジェクトのハンドルを取得 することができます:

        ax=gca();//カレントの軸のハンドル
        hi=ax.children($+i-1)// i番目のシステムの複合オブジェクトのハンドル

この複合オブジェクトは2つの子を有します: 小さな矢印(小さな線分群の集合)と曲線ラベル(テキストの複合要素) を定義する複合オブジェクトおよび曲線自体の線分群. 以下のコードは,特定のナイキスト線図の表示をカスタマイズする方法を 示します.

        hi.children(1).visible='off'; //矢印とラベルを隠す
        hi.children(2).thickness=2; //曲線を太くする

## 例

        //ナイキスト線図
        s=poly(0,'s')
        h=syslin('c',(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01));
        h1=h*syslin('c',(s^2+2*0.1*15.1*s+228.01)/(s^2+2*0.9*15*s+225))
        clf();    nyquist(h1)
        // データティップを追加
        ax=gca();
        h_h=ax.children($).children(2);//hのナイキスト線図のハンドル
        tip=datatipCreate(h_h,[1.331,0.684]);
        datatipSetOrientation(tip,"upper left");

s=poly(0,'s') h=syslin('c',(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01)); h1=h*syslin('c',(s^2+2*0.1*15.1*s+228.01)/(s^2+2*0.9*15*s+225)) clf(); nyquist(h1) ax=gca(); h_h=ax.children($).children(2);//hのナイキスト線図のハンドル tip=datatipCreate(h_h,[1.331,0.684]); datatipSetOrientation(tip,"upper left");

        //ナイキスト線図のグリッドによるホール図
        s=poly(0,'s');
        Plant=syslin('c',16000/((s+1)*(s+10)*(s+100)));
        //2自由度PID
        tau=0.2;xsi=1.2;
        PID=syslin('c',(1/(2*xsi*tau*s))*(1+2*xsi*tau*s+tau^2*s^2));
        clf();
        nyquist([Plant;Plant*PID],0.5,100,["Plant";"Plant and PID corrector"]);
        hallchart(colors=color('light gray')*[1 1])
        //右下隅に凡例を移動
        ax=gca();Leg=ax.children(1);
        Leg.legend_location="in_upper_left";

s=poly(0,'s'); Plant=syslin('c',16000/((s+1)*(s+10)*(s+100))); tau=0.2;xsi=1.2; PID=syslin('c',(1/(2*xsi*tau*s))*(1+2*xsi*tau*s+tau^2*s^2)); clf(); nyquist([Plant;Plant*PID],0.5,100,["Plant";"Plant and PID corrector"]); hallchart(colors=color('light gray')*[1 1]) ax=gca();Leg=ax.children(1); Leg.legend_location="in_upper_left";

## 参照

- syslin
- bode
- black
- nyquistfrequencybounds
- calfrq
- freq
- repfreq
- phasemag
- datatips