Main Content

etfe

経験的な伝達関数とピリオドグラムの推定

説明

g = etfe(data) は、次の形式の伝達関数を推定します。

y(t)=G(q)u(t)+v(t)

data には、時間領域または周波数領域の入出力データまたは時系列データが含まれます。data は、timetable、数値行列のコンマ区切りペア、あるいは時間領域または周波数領域の iddata オブジェクトの形式にすることができます。

  • data に時間領域の入出力信号が含まれている場合、g はデータの入力のフーリエ変換に対する出力のフーリエ変換の比です。

    非周期的なデータの場合は、128 の等間隔の周波数 [1:128]/128*pi/Ts で伝達関数が推定されます。

    0 または正の整数の期間 (data.Period = integer) を含む周期的なデータの場合は、周波数 k*2*pi/periodk = 0 からナイキスト周波数までの応答が計算されます。

  • data に周波数領域の入出力信号が含まれている場合、g は入力が非ゼロのすべての周波数における入力に対する出力の比です。

  • data に時系列データ (入力チャネルなし) が含まれている場合、g はデータのピリオドグラム (フーリエ変換の正規化された絶対二乗) です。対応するスペクトル推定は、Spectrum Normalizationで説明されているように正規化されます。これは Signal Processing Toolbox™ 製品の spectrum 正規化とは異なります。

data が timetable の場合、最後の変数が単一の出力変数であるものと解釈されます。この解釈を変更するには、名前と値の引数 InputName および OutputName を使用します。

g = etfe(data,M) は、生のスペクトル推定に対して、約 pi/M の周波数分解能のハミング ウィンドウを使用して平滑化処理を適用します。M の効果は、spa における M の効果と同様です。M は周期的なデータの場合は無視されます。この構文は、大きい M の値を必要とする狭帯域のスペクトルやシステムに対して spa の代わりに使用します。

g = etfe(data,M,N) は、非周期的なデータに対する周波数間隔 N を指定します。

  • 非周期的な時間領域データの場合、N で周波数グリッド [1:N]/N*pi/Ts rad/TimeUnit を指定します。指定しない場合、N は 128 です。

  • 周期的な時間領域データの場合、N は無視されます。

  • 周波数領域データの場合、Nfmin:delta_f:fmax です。ここで、[fmin fmax]data の周波数の範囲、delta_f(fmax-fmin)/(N-1) rad/TimeUnit です。指定しない場合、データに含まれる入力が非ゼロの周波数で応答が計算されます。

g = etfe(___,Name,Value) は、1 つ以上の名前と値の引数で指定された追加のモデル オプションを使用します。

たとえば、g = etfe(data,'InputName',["u1","u3"],'OutputName',["y1","y4"]) を使用して入出力信号変数名を指定します。

この構文では、前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

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

load sdata1 tt1;

経験的な伝達関数と平滑化スペクトル推定を推定します。

ge = etfe(tt1);
gs = spa(tt1);

2 つのモデルをボード線図で比較します。

bode(ge,gs)

Figure contains 2 axes objects. Axes object 1 with title From: u To: y, ylabel Magnitude (dB) contains 2 objects of type line. These objects represent ge, gs. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent ge, gs.

周期的入力を生成し、それを使用してシステムをシミュレートしてから、励起周波数点における推定モデルの周波数応答を元のシステムと比較します。

シミュレーションを使用して周期的な入力信号と出力信号を生成します。

m = idpoly([1 -1.5 0.7],[0 1 0.5]);
u = iddata([],idinput([50,1,10],'sine'));
u.Period = 50;
y = sim(m,u);

経験的な伝達関数を推定します。

me = etfe([y u]);

経験的な伝達関数を元のモデルと比較します。

bode(me,'b*',m,'r')

Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1, ylabel Magnitude (dB) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent me, m. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent me, m.

生のスペクトル推定に対してハミング ウィンドウを使用して平滑化処理を実行し、応答を比較します。

データを読み込みます。

load sdata1 umat1 ymat1

平滑化処理を使用した場合と使用しない場合のそれぞれで経験的な伝達関数を推定します。

ge1 = etfe(umat1,ymat1);
ge2 = etfe(umat1,ymat1,32);

モデルをボード線図で比較します。

平滑化処理の効果により、ge2 の方が ge1 よりも滑らかになっています。

bode(ge1,ge2)

Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1, ylabel Magnitude (dB) contains 2 objects of type line. These objects represent ge1, ge2. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent ge1, ge2.

低周波数と高周波数のそれぞれの周波数間隔で経験的な伝達関数を推定し、応答を比較します。

データを読み込みます。

load iddata9

低周波数と高周波数のそれぞれの周波数間隔で経験的な伝達関数を推定します。

ge1 = etfe(z9,[],32);
ge2 = etfe(z9,[],512);

2 つのモデルの出力パワー スペクトルをプロットします。

spectrum(ge1,'b.-',ge2,'g')

Figure contains an axes object. The axes object with title From: e@y1 To: y1, ylabel Power (dB) contains 2 objects of type line. These objects represent ge1, ge2.

入力引数

すべて折りたたむ

等間隔にサンプリングされた推定データ。以降のセクションで説明しているように、timetable、コンマ区切りの行列ペア、時間領域または周波数領域の iddata オブジェクト、timetable の cell 配列、または行列の cell 配列ペアとして指定します。

timetable

一定間隔の時間ベクトルを使用する timetable として data を指定します。data には入力チャネルと出力チャネルを表す変数が含まれます。

複数実験データの場合は、データを timetable の Ne 行 1 列の cell 配列として指定します。Ne は実験数です。すべての実験のサンプル時間が一致していなければなりません。

推定に timetable を使用する場合、すべての変数を使用するか、使用するチャネルのサブセットを指定できます。推定に使用する個別の入出力チャネルを選択するには、名前と値の引数 InputName および OutputName を使用します。

時系列データの場合、出力変数のみが含まれている単一変数の timetable として data を指定するか、名前と値の引数 InputName および OutputName を使用して推定用の出力変数のみを指定します。

たとえば、sys = etfe(data,'OutputName',"y2",'InputName',[]) は、出力変数 y2 を使用し、入力変数なしで、timetable data から時系列モデル sys を推定します。

コンマ区切りの行列ペア

等間隔にサンプリングされた入出力の時間領域の信号値が含まれた行列 u,y のコンマ区切りのペアとして data を指定します。行列ベースのデータはサンプル時間情報を提供しません。サンプル時間は 1 秒と仮定されます。連続時間システムでの行列ベースのデータの使用は推奨されません。

SISO システムの場合は、長さが Ns の列ベクトルとして u,y を指定します。ここで、Ns はサンプル数です。

MIMO システムの場合は、以下の次元をもつ行列ペアとして u,y を指定します。

  • u — Ns 行 Nu 列の行列。Nu は入力の数です。

  • y — Ns 行 Ny 列の行列。Ny は出力の数です。

複数実験データの場合は、u,y を 1 行 Ne 列の cell 配列のペアとして指定します。Ne は実験数です。

時系列システムの場合は、空の u、つまり [],y を指定します。

データ オブジェクト

推定データ オブジェクト。等間隔にサンプリングされた入出力値を含む、時間領域または周波数領域の iddata オブジェクトとして指定します。データ オブジェクトは 1 つ以上の出力チャネルとゼロ個以上の入力チャネルをもつことができます。既定では、モデルのサンプル時間は推定データのサンプル時間に設定されます。

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

周波数分解能。正のスカラーとして指定します。

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

周波数間隔。正のスカラーとして指定します。周波数領域データの場合、既定の周波数間隔は推定データに固有の間隔になります。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: sys = etfe(data,'InputName',"u2")

入力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

データ ソースに timetable を使用している場合は、InputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = etfe(tt,__,'InputName',["u1" "u2"]) は、推定で使用する timetable tt からの入力チャネルとして変数 u1 および u2 を選択します。

出力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

データ ソースに timetable を使用している場合は、OutputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = etfe(tt,__,'OutputName',["y1" "y3"]) は、推定で使用する timetable tt からの出力チャネルとして変数 y1 および y3 を選択します。

サンプル時間。'Ts' とサンプル時間 (TimeUnit で指定された単位) で構成されるコンマ区切りのペアとして指定します。行列ベースのデータ (u,y) を使用するときに、仮定された 1 秒のサンプル時間以外のサンプル時間が必要な場合は Ts を指定する必要があります。

timetable tt のデータのサンプル時間を取得するには、timetable プロパティ tt.Properties.Timestep を使用します。

例: etfe(umat1,ymat1,___,'Ts',0.08) は、0.08 秒のサンプル時間でモデルを計算します。

出力引数

すべて折りたたむ

伝達関数の推定。idfrd モデルとして返されます。

推定結果と使用されたオプションに関する情報は、モデルの Report プロパティに格納されます。Report には次のフィールドがあります。

Report のフィールド説明
Status

モデルのステータスの概要。モデルが構築によって作成されたものか推定によって取得されたものかを示します。

Method

使用された推定コマンド。

WindowSize

ハミング ウィンドウのサイズ。

DataUsed

推定に使用されたデータの属性。次のフィールドをもつ構造体として返されます。

フィールド説明
Name

データ セットの名前。

Type

データ型。

Length

データ サンプルの数。

Ts

サンプル時間。

InterSample

入力サンプル間動作。次の値のいずれかとして返されます。

  • 'zoh' — ゼロ次ホールドにより、サンプル間で区分的に一定な入力信号を維持。

  • 'foh' — 1 次ホールドにより、サンプル間で区分的に線形な入力信号を維持。

  • 'bl' — 帯域幅を制限した動作により、ナイキスト周波数を超える連続時間入力信号のパワーがゼロになるように指定。

InputOffset

推定時に時間領域の入力データから削除されたオフセット。非線形モデルの場合は [] になります。

OutputOffset

推定時に時間領域の出力データから削除されたオフセット。非線形モデルの場合は [] になります。

Report の使用の詳細については、Estimation Reportを参照してください。

バージョン履歴

R2006a より前に導入

すべて展開する