メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

idfrd

R2026a

周波数応答データまたはモデル

説明

idfrd オブジェクトは、周波数値の範囲にわたる周波数応答データを格納します。idfrd オブジェクトは 2 つの方法で使用できます。iddata オブジェクトと同様に、時間領域モデルまたは周波数領域モデルを推定するための推定データとしてこのオブジェクトを使用できます。あるいは、idss 状態空間モデルや他の同定した線形モデルを使用する方法と同様に、線形モデルとしてこのオブジェクトを使用できます。idfrd コマンドを使用して、周波数応答データをカプセル化するか、線形の時間領域または周波数領域の動的モデルを周波数応答モデルに変換します。

モデル推定コマンド ssest など、iddata オブジェクトを受け入れるコマンドは通常、idfrd オブジェクトも受け入れます。ただし、idfrd オブジェクトには 1 つの実験からのデータのみを含めることができます。iddata オブジェクトが備えている複数実験機能はありません。

解析および検証コマンド compare、sim、bode など、同定された線形モデルを受け入れるコマンドは通常、idfrd モデルも受け入れます。

次の形式のモデルを考えます。

y(t)=G(q)u(t)+H(q)e(t)

伝達関数推定は G(eiω) であり、出力の加法性ノイズ スペクトル Φv は次のとおりです。

Φv(ω)=λT|H(eiωT)|2

ここで、λ は e(t) の推定分散、T はサンプル時間です。

連続時間システムでは、ノイズ スペクトルは次のとおりです。

Φv(ω)=λ|H(eiω)|2

idfrd オブジェクトは G(eiω) および Φv を格納します。

作成

idfrd モデルは 3 つの方法のいずれかで取得できます。

  • idfrd コマンドを使用して周波数応答データからモデルを作成する。たとえば、サンプル時間 Ts を使用して特定の周波数で取得した周波数応答データをカプセル化する idfrd モデルを作成します。

    sysfr = idfrd(ResponseData,Freq,Ts)
    例については、周波数応答データからの idfrd オブジェクトの作成を参照してください。

  • 時間領域データ、周波数領域データ、または周波数応答データを使用して、spa などの周波数応答推定コマンドを使用してモデルを推定する。

    sysfr = spa(data)

    周波数応答推定コマンドの詳細については、spa、spafdr、および etfe を参照してください。

  • モデルの周波数応答を計算することで、idss モデルのような線形モデルを、idfrd モデルに変換する。

    sysfr = idfrd(sys)
    線形モデル変換の例については、周波数応答モデルへの時間領域モデルの変換を参照してください。

idfrd モデル オブジェクトからの情報の抽出およびモデル オブジェクトの変換に使用できる関数の詳細については、オブジェクト関数を参照してください。

説明

周波数応答オブジェクトの作成

sysfr = idfrd(ResponseData,Frequency,Ts) は、周波数値 Frequency における線形システムの周波数応答 ResponseData を格納する離散時間 idfrd オブジェクトを作成します。Ts はサンプル時間です。連続時間システムでは、Ts を 0 に設定します。

例

sysfr = idfrd(___,Name,Value) は、1 つ以上の名前と値の引数を使用して追加プロパティを設定します。最初の 3 つの引数の後に名前と値の引数を指定します。たとえば、周波数単位を MHz として指定するには、sysfr = idfrd(ResponseData,Frequency,Ts,'FrequencyUnits','MHz') を使用します。

周波数応答モデルへの同定された線形モデルの変換

sysfr = idfrd(sys) は System Identification Toolbox™ または Control System Toolbox™ 線形モデルを、出力ノイズ スペクトルおよびスペクトル共分散を含め、既定の周波数における周波数応答データに変換します。

例

sysfr = idfrd(sys,Frequency) は、周波数 Frequency における周波数応答を計算します。ここで、Frequency はラジアン/TimeUnit 単位で表されています。

sysfr = idfrd(sys,Frequency,FrequencyUnits) は、FrequencyUnit で指定された単位で Frequency ベクトルの周波数を解釈します。

入力引数

すべて展開する

線形動的システム モデル。System Identification Toolbox または Control System Toolbox 線形モデルとして指定します。

プロパティ

すべて展開する

周波数応答データ。複素数の 3 次元配列として指定します。

  • SISO システムの場合、ResponseData は Frequency プロパティで指定された周波数点における周波数応答値のベクトルです。

  • Nu 入力と Ny 出力のある MIMO システムの場合、ResponseData は、Ny×Nu×Nf の配列です。ここで Nf は周波数点の数です。

    ResponseData(ky,ku,kf) は、周波数 Frequency(kf) における入力 ku から出力 ky への周波数応答です。

ResponseData に対応する周波数点。FrequencyUnit で指定された単位の Nf 点を含む列ベクトルとして指定します。

Frequency プロパティの周波数ベクトルの単位。以下のいずれかの値として指定します。

  • 'rad/TimeUnit'

  • 'cycles/TimeUnit'

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

単位 'rad/TimeUnit' と 'cycles/TimeUnit' は、TimeUnit プロパティで指定された時間単位に相対的です。

このプロパティを変更してもリサンプリングやデータの変換は行われません。プロパティを変更すると、既存のデータの解釈のみが変更されます。chgTimeUnit を使用して、データをさまざまな周波数単位に変換します。

システム出力外乱 (ノイズ) のパワー スペクトルおよびクロス スペクトル。ベクトル (単出力システム) または複素数の 3 次元配列 (多出力システム) として指定します。Ny 個の出力と Nf 個の周波数点をもつ応答データの場合、SpectrumData を Ny×Ny×Nf の配列として指定します。

SpectrumData(ky1,ky2,kf) は、周波数 Frequency(kf) における出力 ky1 のノイズと出力 ky2 のノイズ間のクロス スペクトルです。パワー スペクトルは、ky1 と ky2 が等しい、クロス スペクトルのサブセットです。

SpectrumData の共分散、Ny×Nu×Nf×2×2 の次元をもつ 5 次元配列として指定します。ここで、Ny は出力の数、Nu は入力の数、Nf は周波数点の数です。

CovarianceData(ky,ku,kf,:,:) は SpectrumData(ky,ku,kf) の 2 行 2 列の共分散行列です。(1,1) 要素は実数部の分散、(2,2) 要素は虚数部の分散、(1,2) 要素と (2,1) 要素は実数部と虚数部の間の共分散です。したがって、squeeze(CovarianceData(ky,ku,kf,:,:)) では、対応する応答の共分散行列が得られます。

モデル sys を変換して sysfr を取得した場合、CovarianceData の値は、sys を取得した方法によって異なります。

  • 同定によって sys を取得した場合、sys 内の不確かさの情報から sysfr の推定共分散が計算されます。グレーボックス モデルを除き、すべてのモデル タイプでこの計算にガウスの近似式が使用されます。グレーボックス モデル (idgrey) では、数値微分が適用されます。

  • idss、idtf、idproc、idgrey、idpoly などのコマンドを使用して sys を作成した場合、sysfr の CovarianceData は [] に設定されます。

パワー スペクトルの分散。ベクトル (単出力システム) または 3 次元配列 (多出力システム) として指定します。Ny 個の出力と Nf 個の周波数点をもつ応答データの場合、NoiseCovariance を Ny×Ny×Nf の配列として指定します。NoiseCovariance(ky1,ky2,kf) は、対応するパワー スペクトルの分散です。

モデルからノイズ成分の影響を除去するには、NoiseCovariance を 0 として指定します。共分散がゼロの場合、予測出力はシミュレートされた出力と同じになります。

離散時間と連続時間の間の変換における入力信号のサンプル間動作。文字ベクトルまたは文字ベクトルの Nu 行 1 列の cell 配列として指定します。ここで、Nu は入力チャネル数です。このプロパティが意味を持つのは、離散時間データから連続時間モデル (サンプル時間 Ts > 0) を推定する場合のみです。

入力チャネルごとに、InterSample の可能な値は次のとおりです。

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

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

  • 'bl' — 帯域幅を制限した動作により、ナイキスト周波数 (pi/sys.Ts rad/s) を超える連続時間入力信号のパワーがゼロになるように指定。この動作は通常、アンチエイリアシング フィルターおよびサンプラーを使用して実験的に入力信号を測定した場合に生じます。データを連続時間として扱うのが最適です。つまり、周波数応答の推定に使用された信号にアンチエイリアシング フィルターが適用された場合、sys.Ts をゼロに設定します。

モデル sys の変換によって sysfr を取得した場合は、InterSample は、sys の推定に使用した iddata オブジェクトの Intersample プロパティに等しくなります。

このプロパティの詳細については、Effect of Input Intersample Behavior on Continuous-Time Modelsを参照してください。

伝達遅延。入出力ペアごとに別個の伝達遅延が含まれた数値配列として指定します。

連続時間システムの場合、伝達遅延は TimeUnit プロパティに格納された時間単位で表されます。離散時間システムの場合、伝達遅延は、サンプル時間 Ts の倍数の遅延を示す整数として表されます。

Ny 個の出力と Nu 個の入力がある MIMO システムの場合は、IODelay を Ny 行 Nu 列の配列として設定します。この配列の各エントリは、対応する入出力のペアの伝達遅延を表す数値です。IODelay をスカラー値に設定して、同一の遅延をすべての入出力ペアに適用できます。

各入力チャネルの入力遅延。スカラー値または数値ベクトルとして指定します。連続時間システムの場合、TimeUnit プロパティに格納された時間単位で入力遅延を指定します。離散時間システムの場合、サンプル時間 Ts の整数倍で入力遅延を指定します。たとえば、InputDelay を 3 に設定すると、3 サンプル時間の遅延が指定されます。

Nu 個の入力があるシステムの場合、InputDelay を Nu 行 1 列のベクトルに設定します。このベクトルの各エントリは、対応する入力チャネル用の入力遅延を表す数値です。

InputDelay をスカラー値に設定して、同一の遅延をすべてのチャネルに適用することもできます。

idfrd などの同定されたシステムでは、OutputDelay はゼロに固定されます。

サンプル時間。以下のいずれかとして指定します。

  • 指定したサンプル時間をもつ離散時間モデル — モデルの TimeUnit プロパティで指定された単位で表されたサンプリング周期を表す正のスカラー

  • 連続時間モデル — 0

  • サンプル時間が指定されていない離散時間モデル — -1

このプロパティを変更してもモデルの離散化やリサンプリングは行われません。c2d と d2c を使用して、連続時間表現と離散時間表現の間の変換を行います。d2d を使用して、離散時間システムのサンプル時間を変更します。

モデル内の時間変数、サンプル時間 Ts および何らかの時間遅延の単位。以下のいずれかの値として指定します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更してもリサンプリングやデータの変換は行われません。プロパティを変更すると、既存のデータの解釈のみが変更されます。chgTimeUnit (Control System Toolbox) を使用して、データをさまざまな時間単位に変換します。

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

  • 単入力モデル — 文字ベクトル。たとえば、'controls' とします。

  • 多入力モデル — 文字ベクトルの cell 配列。

または、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てます。たとえば、sys が 2 入力モデルである場合は、以下のようになります。

sys.InputName = 'controls';

入力名は自動的に {'controls(1)';'controls(2)'} へと拡張されます。

iddata オブジェクトの data を使用してモデルを推定すると、InputName は自動的に data.InputName に設定されます。

省略形表記 u を使用して、InputName プロパティを参照できます。たとえば、sys.u は sys.InputName と同じです。

入力チャネル名は以下のように複数の方法で使用できます。

  • モデル表示とプロットでチャネルを識別する

  • MIMO システムのサブシステムを抽出する

  • モデル相互接続時に接続点を指定する

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

  • 単入力モデル — 文字ベクトル

  • 多入力モデル — 文字ベクトルの cell 配列

InputUnit を使用して入力信号単位を追跡します。InputUnit はシステムの動作に影響しません。

入力チャネル グループ。構造体として指定します。InputGroup プロパティによって、MIMO システムの入力チャネルをグループに分割できます。これにより、各グループを名前で参照できます。InputGroup 構造体で、フィールド名をグループ名に設定し、フィールド値を各グループに属する入力チャネルに設定します。

たとえば、入力チャネル 1 と 2 およびチャネル 3 と 5 をそれぞれ含む controls および noise という名前の入力グループを作成します。

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

その後、以下の構文を使用して controls 入力からすべての出力にサブシステムを抽出できます。

sys(:,'controls')

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

  • 単入力モデル — 文字ベクトル。たとえば、'measurements' などです。

  • 多入力モデル — 文字ベクトルの cell 配列

または、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てます。たとえば、sys が 2 出力力モデルである場合は、以下のようになります。

sys.OutputName = 'measurements';

出力名は自動的に {'measurements(1)';'measurements(2)'} へと拡張されます。

iddata オブジェクトの data を使用してモデルを推定すると、OutputName は自動的に data.OutputName に設定されます。

省略形表記 y を使用して、OutputName プロパティを参照できます。たとえば、sys.y は sys.OutputName と同じです。

出力チャネル名は以下のように複数の方法で使用できます。

  • モデル表示とプロットでチャネルを識別する

  • MIMO システムのサブシステムを抽出する

  • モデル相互接続時に接続点を指定する

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

  • 単入力モデル — 文字ベクトル。たとえば、'seconds' とします。

  • 多入力モデル — 文字ベクトルの cell 配列。

OutputUnit を使用して出力信号単位を追跡します。OutputUnit はシステムの動作に影響しません。

出力チャネル グループ。構造体として指定します。OutputGroup プロパティによって、MIMO システムの出力チャネルをグループに分割し、各グループを名前で参照できます。OutputGroup 構造体で、フィールド名をグループ名に設定し、フィールド値を各グループに属する出力チャネルに設定します。

たとえば、出力チャネル 1、およびチャネル 3 と 5 をそれぞれ含む temperature および measurement という名前の出力グループを作成します。

sys.OutputGroup.temperature = [1];
sys.OutputGroup.measurement = [3 5];

その後、以下の構文を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

sys('measurement',:)

システム名。文字ベクトルとして指定します。たとえば、'system_1' とします。

システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として指定します。プロパティには指定したデータ型が格納されます。たとえば、sys1 と sys2 が動的システム モデルである場合、その Notes プロパティを次のように設定できます。

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

システムに関連付けるデータ。任意の MATLAB データ型として指定します。

モデル配列のサンプリング グリッド。構造体として指定します。

1 つ以上の独立変数をサンプリングすることによって派生させた、同定された線形 (IDLTI) モデルの配列の場合、このプロパティは各モデルに関連付けられた変数値を追跡します。この情報はモデル配列を表示またはプロットすると表示されます。この情報を使用して、結果を独立変数まで遡ります。

データ構造のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値およびスカラー値でなければならず、サンプル値のすべての配列はモデル配列の次元と一致しなければなりません。

たとえば、システムのさまざまな操作点でデータを収集するとします。各操作点に対して別個にモデルを同定し、結果を一緒に単一のシステム配列に入れることができます。操作点に関する情報を使用して配列内の個別モデルにタグを付けることができます。

nominal_engine_rpm = [1000 5000 10000];
sys.SamplingGrid = struct('rpm', nominal_engine_rpm)

ここで、sys は、それぞれ 1000、5000、および 10,000 rpm で取得された、3 つの同定されたモデルを含む配列です。

複数のパラメーター値または操作点で Simulink® モデルを線形化することにより生成したモデル配列の場合、SamplingGrid には配列の各エントリに対応する変数値が自動的に入力されます。

この プロパティ は読み取り専用です。

spa、spafdr、etfe などの推定コマンドを使用して周波数応答モデルが取得された場合の推定オプションおよび結果に関する情報を含む概要レポート。Report を使用して、モデルに推定方法をクエリします。以下が含まれます。

  • 推定法

  • 推定のオプション

Report の内容は、モデルが構築によって作成された場合は意味をもちません。

f = logspace(-1,1,100);
[mag,phase] = bode(idtf([1 .2],[1 2 1 1]),f);
response = mag.*exp(1j*phase*pi/180);
sysfr = idfrd(response,f,0.08);
sysfr.Report.Method
ans =

     ''

推定コマンドを使用して周波数応答モデルを取得した場合、Report のフィールドには推定データ、オプション、および結果に関する情報が含まれます。

load iddata3;
sysfr = spa(z3);sysfr.Report.Method
ans =

SPA

このプロパティおよびその使用方法の詳細については、対応する推定コマンドのリファレンス ページの出力引数セクションおよびEstimation Reportを参照してください。

オブジェクト関数

動的システム モデルに適用できる多くの関数は idfrd モデル オブジェクトにも適用できます。これらの関数は 3 つの一般的なタイプに分類されます。

  • chgTimeUnit や chgFreqUnit など、idfrd モデル オブジェクトに対して操作を行い、結果のオブジェクトを返す関数

  • bode や sim など、idfrd オブジェクトに対して解析およびシミュレーションの機能を実行する関数

  • getcov など、モデル情報を取得または解釈する関数

他の同定された線形モデルとは異なり、idss や idtf などのコマンドを使用して idfrd モデルを別のモデル タイプに直接変換することはできません。代わりに、idfrd オブジェクトを推定データとして使用して、対象モデルの推定コマンドを使用します。たとえば、idfrd モデルの sysfr の周波数応答データから sys = ssest(sysfr,2) を使用して 2 次状態空間モデルを推定します。idfrd オブジェクトを推定データとして使用する例については、周波数応答データを使用した時間領域モデルの推定を参照してください。

以下のリストには、idss モデルで使用できる関数の代表的なサブセットが含まれています。

すべて展開する

chgTimeUnit動的システムの時間単位の変更
chgFreqUnit周波数応答データ モデルの周波数単位の変更
fselectFRD モデルの周波数点、または範囲の選択
frdata周波数応答データ (FRD) オブジェクトのデータへのアクセス
fcat周波数領域に沿って FRD モデルを連結

すべて展開する

bode動的システムのボード周波数応答
spectrum時系列モデルの出力パワー スペクトルまたは線形入出力モデルの外乱スペクトルをプロットするか返す

すべて展開する

getモデル プロパティ値にアクセスする
getcovParameter covariance of identified model

例

すべて折りたたむ

周波数応答データから idfrd オブジェクトを作成します。

振幅データ AMP、位相データ PHA、および周波数ベクトル W を読み込みます。サンプル時間 Ts を 0.1 に設定します。

load demofr AMP PHA W
Ts = 0.1;

AMP および PHA の値を使用して、複素数値の応答 response を計算します。

response = AMP.*exp(1j*PHA*pi/180);

idfrd object を作成して、response を idfrd オブジェクトの frdata に格納します。

frdata = idfrd(response,W,Ts)
frdata =
IDFRD model.
Contains Frequency Response Data for 1 output(s) and 1 input(s).
Response data is available at 1000 frequency points, ranging from 0.03142 rad/s to 31.42 rad/s.
 
Sample time: 0.1 seconds
Status:                                                         
Created by direct construction or transformation. Not estimated.
 
Model Properties

データをプロットします。

bode(frdata)

MATLAB figure

frdata は、ドット表記を使用してアクセスできるオブジェクト プロパティをもつ複素数オブジェクト idfrd です。たとえば、Ts の値を確認します。

tsproperty = frdata.Ts
tsproperty = 
0.1000

プロパティ値を設定することもできます。Name プロパティを 'DC_Converter' に設定します。

frdata.Name = 'DC_Converter';

frdata を System Identification アプリにインポートすると、アプリはこのデータに変数名 frdata ではなく DC_Converter という名前を付けます。

get を使用してプロパティ設定の完全なセットを取得します。

get(frdata)
      FrequencyUnit: 'rad/TimeUnit'
             Report: [1×1 idresults.frdest]
       SpectrumData: []
     CovarianceData: []
    NoiseCovariance: []
        InterSample: {'zoh'}
       ResponseData: [1×1×1000 double]
            IODelay: 0
         InputDelay: 0
        OutputDelay: 0
          InputName: {''}
          InputUnit: {''}
         InputGroup: [1×1 struct]
         OutputName: {''}
         OutputUnit: {''}
        OutputGroup: [1×1 struct]
              Notes: [0×1 string]
           UserData: []
               Name: 'DC_Converter'
                 Ts: 0.1000
           TimeUnit: 'seconds'
       SamplingGrid: [1×1 struct]
          Frequency: [1000×1 double]

idfrd コマンドを使用して状態空間モデルを周波数応答モデルに変換します。

データ z2 を読み込み、2 次状態空間モデル sys を推定します。

load iddata2 z2
sys = ssest(z2,2);

sys を idfrd モデルの frsys に変換します。

frsys = idfrd(sys)
frsys =
IDFRD model.
Contains Frequency Response Data for 1 output(s) and 1 input(s), and the spectra for disturbances at the outputs.
Response data and disturbance spectra are available at 68 frequency points, ranging from 0.1 rad/s to 1000 rad/s.
 
Output channels: 'y1'
Input channels: 'u1'
Status:                               
Created by conversion from idss model.
 
Model Properties

frsys をプロットします。

bode(frsys)

MATLAB figure

frsys は、動的システム モデルとして、もしくは時間領域モデルまたは周波数領域モデルの推定データとして使用できる idfrd モデルです。

伝達関数モデルの周波数応答を取得し、応答を idfrd オブジェクトに変換します。

1 つの零点と 3 つの極をもつ伝達関数モデルを構築します。

systf = idtf([1 .2],[1 2 1 1]);

bode を使用して、振幅と位相の観点から周波数ベクトル f について systf の周波数応答を取得します。

f = logspace(-1,1,100);
[mag,phase] = bode(systf,f);

mag および phase の値を使用して、複素数値の応答 response を計算します。

response = mag.*exp(1j*phase*pi/180);

idfrd オブジェクトの frdata を作成して、response を格納します。サンプル レート Ts として 0.8 を指定します。

Ts = 0.8;
frdata = idfrd(response,f,Ts)
frdata =
IDFRD model.
Contains Frequency Response Data for 1 output(s) and 1 input(s).
Response data is available at 100 frequency points, ranging from 0.1 rad/s to 10 rad/s.
 
Sample time: 0.8 seconds
Status:                                                         
Created by direct construction or transformation. Not estimated.
 
Model Properties

データをプロットします。

bode(frdata)

MATLAB figure

frdata は idfrd 複素数オブジェクトです。

時間領域データから伝達関数モデルを推定し、結果の idtf モデルを idfrd モデルに変換します。idfrd モデルの周波数応答データから新しい伝達関数モデルを推定します。モデルの応答を元のデータと比較します。

時間領域データ z2 を読み込み、そのデータを使用して 2 つの極と 1 つの零点を含む伝達関数 sys を推定します。

load iddata2 z2
sys = tfest(z2,2,1);

sys を idfrd モデルに変換し、周波数応答をプロットします。

frsys = idfrd(sys);
bode(sys)

frsys からのデータを推定データとして使用して新しい伝達関数 sys1 を推定します。

sys1 = tfest(frsys,2,1);

sys および sys1 の応答を元の推定データ z2 と比較します。

compare(z2,sys,sys1)

MATLAB figure

MATLAB figure

モデルの応答は一致します。

バージョン履歴

R2006a より前に導入