repfreq 周波数応答

## 呼び出し手順

    [ [frq,] repf]=repfreq(sys,fmin,fmax [,step])
                [ [frq,] repf]=repfreq(sys [,frq])
                [ frq,repf,splitf]=repfreq(sys,fmin,fmax [,step])
                [ frq,repf,splitf]=repfreq(sys [,frq])

## パラメータ

sys

  `syslin` リスト: SIMO 線形システム

fmin,fmax

  実数(周波数範囲の下限と上限)

frq

  周波数の実数ベクトル (Hz)

step

  対数離散刻み増分

splitf

  臨界周波数の添え字ベクトル.

repf

  複素周波数応用のベクトルv

## 説明

`sys(s)` が `Sys`の伝達関数の場合, `repf(k)` は, 連続時間システムの場合に`s= %i*frq(k)*2*%pi`, 離散時間システム(サンプリング時間:`dt`)の場合に`exp(2*%i*%pi*dt*frq(k))` で評価された `sys(s)` に等しくなります.

`db(k)` は`repf(k)`の振幅(単位: dB),すなわち, `db(k)=20*log10(abs(repf(k)))`です. また, `phi(k)` は`repf(k)`の位相(単位:度)です.

`fmin,fmax,step` が入力パラメータの場合, `frq=[10.^((log10(fmin)):step:(log10(fmax))) fmax];`で指定された 周波数ベクトル`frq`に関して応答が計算されます.

`step` が指定されない場合, 出力パラメータ `frq` が `frq=calfrq(sys,fmin,fmax)`により計算されます.

ベクトル `frq` は,`splitf` ベクトルにより 複数の通常の周波数範囲に分割されます. `frq(splitf(k):splitf(k+1)-1)` は臨界周波数を有しません. `sys` は, `[frq(splitf(k)),frq(splitf(k)+1)]` の 範囲に極を一つ有し, その外側には極がありません.

## 例

    A=diag([-1,-2]);B=[1;1];C=[1,1];
    Sys=syslin('c',A,B,C);
    frq=0:0.02:5;w=frq*2*%pi; //frq=frequencies in Hz ;w=frequencies in rad/sec;
    [frq1,rep] =repfreq(Sys,frq);
    [db,phi]=dbphi(rep);
    Systf=ss2tf(Sys)    //Transfer function of Sys
    x=horner(Systf,w(2)*sqrt(-1))    // x is Systf(s) evaluated at s = i w(2)
    rep=20*log(abs(x))/log(10)   //magnitude of x in dB
    db(2)    // same as rep
    ang=atan(imag(x),real(x));   //in rad.
    ang=ang*180/%pi              //in degrees
    phi(2)
    repf=repfreq(Sys,frq);
    repf(2)-x

## 参照

- bode
- freq
- calfrq
- horner
- nyquist
- dbphi