Main Content

freqresp

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

説明

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

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

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

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

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

すべて折りたたむ

この例では、次の 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 x 2 x 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 x 2 x 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 モデル、tf モデル、zpk モデルなどの LTI モデル。

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

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

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

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

  • idss (System Identification Toolbox) モデルなどの同定された状態空間モデル。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。)

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

システム応答を評価するための周波数値。スカラー値のベクトルまたは複素数値のベクトルのいずれかとして指定します。周波数を rad/TimeUnit 単位で指定します。ここで、TimeUnitsysTimeUnit プロパティ内で指定される時間単位です。

周波数は、sys が連続時間モデルであるか離散時間モデルであるかに基づいて、それぞれラプラス変数 s または z で指定できます。たとえば、周波数値 w rad/s におけるシステム sys の周波数応答を評価する場合、値を次のように指定します。

  • sys が連続時間の場合は、s = jw

  • sys が離散時間の場合は、z = ejwT。ここで T はサンプル時間です。

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

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

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

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

出力引数

すべて折りたたむ

周波数応答の値。配列として返されます。

sys の実体と、対応する配列は次のとおりです。

  • Ny 個の出力と Nu 個の入力をもつ個別の動的システム モデルである場合、H は次元が NyxNuxNw の 3D 配列です。ここで、Nw は周波数点の数です。このため、H(:,:,k) は周波数が w(k) または wout(k) の場合の応答になります。

  • サイズ [Ny Nu S1 ... Sn] のモデル配列である場合、H は次元が NyxNuxNwxS1x...xSn] の配列です。

  • 周波数応答データ モデル (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]を参照してください。

参照

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

バージョン履歴

R2006a より前に導入

参考

| | | | | | (System Identification Toolbox)