Main Content

freqresp

周波数のグリッドでのシステム応答の評価

説明

周波数のグリッドでのシステム応答を評価するには、freqresp を使用します。周波数応答の振幅と位相のデータをそのプロットとともに取得するには、bode を使用してください。

[H,wout] = freqresp(sys) は、周波数 wout での動的システム モデル sys の周波数応答を返します。freqresp は、sys のダイナミクスに基づいて周波数を自動的に判定します。周波数応答の詳細については、周波数応答を参照してください。

H = freqresp(sys,w) は、ベクトル w で指定された実周波数グリッドでの周波数応答を返します。

H = freqresp(sys,w,units) は、w の周波数単位を明示的に指定します。

[H,wout,covH] = freqresp(sys,___) は、周波数応答の共分散 covH も返します。この構文は、sys同定された LTI モデル (Control System Toolbox)にリストされているいずれかのタイプの同定されたモデルである場合にのみ使用します。

すべて折りたたむ

この例では、次の SISO 状態空間モデルを考えます。

A=[-1.5-210]B=[0.50]C=[01]D=0SISO State-Space Model

次の状態空間行列で定義される SISO 状態空間モデルを作成します。

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D);

システムの周波数応答を計算します。

[H,wout] = freqresp(sys);
size(H)
ans = 1×3

     1     1    56

H には、sys のダイナミクスに基づいて自動選択された 56 点の周波数での周波数応答が含まれています。

size(wout)
ans = 1×2

    56     1

wout には、これに対応する 56 点の周波数が含まれています。

次の 2 入力 2 出力システムを作成します。

sys=[01s+1s-1s+21]

sys11 = 0; 
sys22 = 1; 
sys12 = tf(1,[1 1]); 
sys21 = tf([1 -1],[1 2]);
sys = [sys11,sys12;sys21,sys22];

システムの周波数応答を計算します。

[H,wout] = freqresp(sys);

H は 2×2×45 の配列です。H の各要素 H(:,:,k) は、対応する周波数 wout(k) における sys のすべての入出力ペアの複素周波数応答を提供する 2 行 2 列の行列です。wout の 45 の周波数は、sys のダイナミクスに基づいて自動選択されます。

次の 2 入力 2 出力システムを作成します。

sys=[01s+1s-1s+21]

sys11 = 0; 
sys22 = 1; 
sys12 = tf(1,[1 1]); 
sys21 = tf([1 -1],[1 2]);
sys = [sys11,sys12;sys21,sys22];

10 ~ 100 ラジアン/秒の 200 の周波数点をもつ対数的に等間隔なグリッドを作成します。

w = logspace(1,2,200);

指定された周波数グリッド上のシステムの周波数応答を計算します。

H = freqresp(sys,w);

H は 2×2×200 の配列です。H の各要素 H(:,:,k) は、対応する周波数 w(k) における sys のすべての入出力ペアの複素周波数応答を提供する 2 行 2 列の行列です。

同定されたプロセス モデルのピーク応答周波数での周波数応答および関連した共分散を計算します。

推定データ z1 を読み込みます。

load iddata1 z1

データを使用して SISO プロセス モデルを推定します。

model = procest(z1,'P2UZ');

モデルがピークの周波数応答のゲインを達成する周波数を計算します。より正確な結果を得るには、1e-6 の許容誤差値を指定します。

[gpeak,fpeak] = getPeakGain(model,1e-6);

model のピーク応答周波数での周波数応答および関連した共分散を計算します。

[H,wout,covH] = freqresp(model,fpeak);

H は周波数 fpeak における応答値で、woutfpeak と同じです。

covH は、周波数 fpeak での入力から出力への応答の共分散行列を含む 5 次元配列です。ここで covH(1,1,1,1,1) は応答の実数部の分散で、covH(1,1,1,2,2) は虚数部の分散です。covH(1,1,1,1,2) 要素と covH(1,1,1,2,1) 要素は、応答の実数部と虚数部間の共分散です。

入力引数

すべて折りたたむ

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

  • ss (Control System Toolbox) モデル、tf (Control System Toolbox) モデル、zpk (Control System Toolbox) モデルなどの LTI モデル。

  • sparss (Control System Toolbox) モデルまたは mechss (Control System Toolbox) モデルなどのスパース状態空間モデル。

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

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

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

  • idss モデルなどの同定された状態空間モデル。

モデルの完全なリストについては、動的システム モデルを参照してください。

システム応答を評価する周波数。ベクトルとして指定します。周波数を rad/TimeUnit 単位で指定します。ここで、TimeUnitsysTimeUnit プロパティ内で指定される時間単位です。周波数は実数値として直接指定するか、ラプラス変数 s または z で指定できます。

  • 指定した周波数におけるシステム応答を取得するには、w で実数値を使用します。

  • s 平面または z 平面の指定した点におけるシステム応答を取得するには、複素数値を使用します。freqresp は複素数値を次のように解釈します。

    • 連続時間 sys の場合、関数は ww(k) = s(k) = j*freq(k) と解釈します。ここで、freq(k) はそれぞれの s の値に対応する周波数です。

    • 離散時間 sys の場合、関数は ww(k) = z(k) = exp(j*freq(k)*Ts) と解釈します。ここで、freq(k) は周波数、Tssys のサンプル時間です。

入力周波数ベクトル w の周波数の単位。以下のいずれかの値として指定。

  • 'rad/TimeUnit' — 時間単位あたりのラジアン。sysTimeUnit プロパティで指定します。

  • 'cycles/TimeUnit' — 時間単位あたりのサイクル。sysTimeUnit プロパティで指定します。

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

出力引数

すべて折りたたむ

周波数応答の値。配列として返されます。H の次元は sys の次元によって異なります。

  • sys が SISO モデルの場合、H は次元 1×1×Nw の配列です。ここで、Nw は周波数点の数 (length(w) または length(wout)) です。

  • sysNy 個の出力と Nu 個の入力をもつ MIMO モデルの場合、HNy×Nu×Nw です。したがって、H(:,:,k)k 番目の周波数におけるすべての I/O チャネルの応答、H(a,b,:) は入力 b から出力 a までの応答です。

  • sys が I/O 次元 [Ny Nu] のモデルを含む配列次元 [S1 ... Sn のモデル配列の場合、H は次元 Ny×Nu×Nw×S1×...×Sn の配列です。たとえば、配列の 3 番目のシステムの最初の出力から 2 番目の入力までの計算されたすべての周波数における応答は H(1,2,:,3) です。

周波数応答データ モデル (frdgenfrdidfrd など) の場合、freqresp(sys,w)sys.frequency で定義された周波数範囲から外れる w の値を NaN として評価します。freqresp コマンドは、sys.frequency の周波数の間で内挿することができます。ただし freqresp では、sys.frequency によって定義された周波数期間を超えた部分は外挿できません。

周波数応答 H に対応する出力周波数。ベクトルとして返されます。freqresp への入力から w を省略すると、コマンドはシステム ダイナミクスに基づいて、wout の周波数を自動的に決定します。w を指定すると、wout = w になります。

周波数応答の共分散。5D 配列として返されます。たとえば、covH(i,j,k,:,:) には、周波数 w(k) における i 番目の入力から j 番目の出力への応答の 2 行 2 列の共分散行列が含まれます。この 2 行 2 列の行列の (1,1) 要素は、応答の実数部の分散です。(2,2) 要素は虚数部の分散です。(1,2) 要素と (2,1) 要素は、応答の実数部と虚数部の間の共分散です。

詳細

すべて折りたたむ

周波数応答

連続時間では、周波数 ω での周波数応答は s = jω での伝達関数値になります。状態空間モデルの場合、この値は以下によって与えられます。

H(jω)=D+C(jωIA)1B

離散時間では、周波数応答は実周波数に対応する単位円上の点で評価される伝達関数です。freqresp は変換 z=ejωTs を使用して、実周波数 w(1)、...、w(N) を単位円上の点にマッピングします。Ts はサンプル時間です。この関数は、結果として生成される z 値の伝達関数の値を返します。サンプル時間が指定されていないモデルでは、freqresp は Ts = 1 を使用します。

アルゴリズム

伝達関数モデルまたは零点-極-ゲイン モデルの場合、freqresp は指定された周波数点で分子 (s) と分母 (s) を評価します。連続時間の状態空間モデル (A, B, C, D) の周波数応答は次のようになります。

D+C(jωA)1B,ω=ω1,,ωN

効率を高めるため、A は上ヘッセンベルグ形式に低減され、ヘッセンベルグ構造を利用しつつ、線形方程式 (jω − A)X = B を各周波数点で解きます。ヘッセンベルグ形式に低減することで、効率と信頼性の両方の妥協を取ることができます。この手法の詳細については、[1] (Control System Toolbox)を参照してください。

参照

[1] Laub, A.J., "Efficient Multivariable Frequency Response Computations," IEEE® Transactions on Automatic Control, AC-26 (1981), pp. 407-408.

バージョン履歴

R2006a より前に導入

参考

| | | (Control System Toolbox) | (Control System Toolbox) | |