最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

frd

周波数応答データ モデルの作成、周波数応答データ モデルへの変換

構文

sys = frd(response,frequency)
sys = frd(response,frequency,Ts)
sys = frd
sysfrd = frd(sys,frequency)
sysfrd = frd(sys,frequency,units)

説明

sys = frd(response,frequency) は多次元配列 response に格納されている周波数応答データから周波数応答データ (frd) モデル オブジェクトの sys を作成します。ベクトルの frequency は周波数応答データの基になっている周波数を表します。応答データ形式の一覧は、FRD モデルで使う引数 response に対応するデータ形式を参照してください。

sys = frd(response,frequency,Ts) はスカラーのサンプル時間が Ts の離散時間 frd モデル オブジェクト sys を作成します。サンプル時間を指定せずに離散時間 frd モデル オブジェクトを作成する場合は、Ts = -1 に設定します。

sys = frd は、空の frd モデル オブジェクトを作成します。

これらの構文の入力引数一覧に次のプロパティ名/プロパティ値の組み合わせを続けることができます。

'PropertyName',PropertyValue

これらの追加引数を使用して、モデルにさまざまなプロパティを設定できます。frd モデルの利用可能なプロパティの詳細は、プロパティを参照してください。

FRD モデルの sys が既存の LTI モデルの refsys から強制的にすべての一般 LTI プロパティを継承するようにするには、次の構文を使用します。

sys = frd(response,frequency,ltisys)

sysfrd = frd(sys,frequency) は、動的システム モデル sys を周波数応答データ形式に変換します。周波数応答はベクトル frequency で提供される周波数で rad/TimeUnit 単位で計算されます。このとき、TimeUnitsysTimeUnit プロパティで指定される、入力動的システムの時間単位です。

sysfrd = frd(sys,frequency,units) は動的システム モデルを frd モデルに変換して、frequency ベクトル内の周波数が units によって指定された単位になるように解釈します。units が取ることができる値のリストについては、プロパティFrequencyUnit プロパティを参照してください。

引数

SISO FRD モデルや MIMO FRD モデル、あるいは FRD モデルの配列を指定する場合、入力引数 frequency は常に長さが Nf のベクトルになり、Nf は FRD の周波数データ点の数を示します。入力引数 response の指定を次の表にまとめます

FRD モデルで使う引数 response に対応するデータ形式

モデル形式

応答データ形式

SISO モデル

response(i) が周波数 frequency(i) での周波数応答である長さ Nf のベクトル

MIMO モデル(出力数 Ny、入力数 Nu)

Ny-Nu-Nf の多次元配列をもち、response(i,j,k) は、周波数 frequency(k)での入力 j から出力 i までの周波数応答

S1-...-Sn 配列のモデル (出力数 Ny、入力数 Nu)

サイズ [Ny Nu S1 ... Sn] の多次元配列。response(i,j,k,:) は、周波数 frequency(k) における 入力 j から出力 i の周波数応答データの配列を指定します。

プロパティ

frd オブジェクトには次のプロパティがあります。

Frequency

周波数応答データの周波数点。FrequencyUnit プロパティで指定された単位で Frequency 値を指定します。

FrequencyUnit

モデルの周波数単位。

FrequencyUnitFrequency プロパティの周波数ベクトルの単位を指定します。FrequencyUnit に以下のいずれかの値を設定します。

  • 'rad/TimeUnit'

  • 'cycles/TimeUnit'

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

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

このプロパティを変更すると、システム全体の動作が変更されます。chgFreqUnit を使用して、システム動作を変更せずに周波数単位を変換します。

既定値: 'rad/TimeUnit'

ResponseData

周波数応答データ。

'ResponseData' プロパティは、複素数の 3 次元配列として周波数応答データを格納します。SISO システムの場合、'ResponseData''Frequency' プロパティに指定された周波数点の周波数応答値のベクトルです。Nu 入力と Ny 出力のある MIMO システムの場合、'ResponseData' はサイズ [Ny Nu Nw] の配列であり、Nw は周波数点の数です。

IODelay

転送遅延。IODelay は各入出力の組に対する独立した転送遅延を指定する数値配列です。

連続時間システムの場合、TimeUnit プロパティに格納された時間単位で転送遅延を指定します。離散時間システムの場合、サンプル時間 Ts の整数倍で転送遅延を指定します。

Ny 出力と Nu 入力を伴う MIMO システムの場合、IODelayNyNu 列の配列に設定します。この配列の各エントリは、対応する入出力の組の転送遅延を表す数値です。IODelay をスカラー値に設定して、同一の遅延をすべての入出力の組に適用することもできます。

既定値: すべての入出力の組み合わせに対して 0

InputDelay

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

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

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

既定値: 0

OutputDelay

出力遅延。OutputDelay は、各出力チャネル用のむだ時間を指定する数値ベクトルです。連続時間システムの場合、TimeUnit プロパティに格納された時間単位で出力遅延を指定します。離散時間システムの場合、サンプル時間 Ts の整数倍で出力遅延を指定します。たとえば OutputDelay = 3 は 3 サンプリング周期の遅延を意味します。

Ny 出力のあるシステムの場合、OutputDelayNy 行 1 列のベクトルに設定します。ここで、それぞれのエントリは、対応する出力チャネル用の出力遅延を表す数値です。OutputDelay をスカラー値に設定して、同一の遅延をすべてのチャネルに適用することもできます。

既定値: すべての出力チャネルに対して 0

Ts

サンプル時間。連続時間モデルの場合、Ts = 0。離散時間モデルの場合、Ts はサンプリング周期を表す正のスカラーです。この値は、モデルの TimeUnit プロパティで指定される単位で表されます。指定のないサンプル時間を伴う離散時間モデルを示すには、Ts = -1 と設定します。

このプロパティを変更してもモデルの離散化やリサンプリングは行われません。

既定値: 0 (連続時間)

TimeUnit

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更しても他のプロパティには影響しないため、システム全体の動作が変更されます。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

既定値: 'seconds'

InputName

入力チャネル名。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'controls' など)。

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

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

sys.InputName = 'controls';

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

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

以下を含めて、入力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての入力チャネルに対する ''

InputUnit

入力チャネル単位。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'seconds' など)。

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

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

既定値: すべての入力チャネルに対する ''

InputGroup

入力チャネル グループ。InputGroup プロパティによって、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照することができます。入力グループを構造体として指定します。この構造体においてフィールド名はグループ名であり、フィールド値は各グループに属する入力チャネルです。以下に例を示します。

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

これは、入力チャネル 1、2 および 3、5 をそれぞれ含む controls および noise という名前の入力グループを作成します。その後、以下を使用して controls 入力からすべての出力にサブシステムを抽出できます。

sys(:,'controls')

既定値: フィールドのない構造体

OutputName

出力チャネル名。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'measurements' とします。

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

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

sys.OutputName = 'measurements';

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

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

以下を含めて、出力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての出力チャネルに対して ''

OutputUnit

出力チャネル単位。次のいずれかとして指定されます。

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

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

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

既定値: すべての出力チャネルに対して ''

OutputGroup

出力チャネル グループ。OutputGroup プロパティによって、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照できます。出力グループを構造体として指定します。この構造体内においてフィールド名はグループ名であり、フィールド値は各グループに属する出力チャネルです。以下に例を示します。

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

これは、出力チャネル 1 および 3、5 をそれぞれ含む temperature および measurement という名前の出力グループを作成します。その後、以下を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

sys('measurement',:)

既定値: フィールドのない構造体

Name

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

既定値: ''

Notes

システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として格納されます。プロパティには指定したデータ型が格納されます。たとえば、sys1sys2 が動的システム モデルである場合、その 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.'

既定値: [0×1 string]

UserData

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

既定値: []

SamplingGrid

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

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

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

たとえば、t = 0:10 の各時点で線形時変システムのスナップショットを記録することにより、線形モデルの 11 行 1 列の配列 sysarr を作成するとします。次のコードは線形モデルでの時間サンプルを格納します。

 sysarr.SamplingGrid = struct('time',0:10)

同様に、2 つの変数 zetaw を個別にサンプリングすることにより、6 行 9 列のモデル配列 M を作成するとします。次のコードは (zeta,w) の値を M に付加します。

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

M を表示する際、配列の各エントリは対応する zetaw の値を取り込みます。

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

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

既定値: []

周波数応答モデルの作成

周波数ベクトルおよび応答データから SISO FRD モデルを作成します。

% generate a frequency vector and response data 
freq = logspace(1,2);
resp = .05*(freq).*exp(i*2*freq);
% Create a FRD model
sys = frd(resp,freq);

R2006a より前に導入