genfrd
一般化周波数応答データ (FRD) モデル
説明
一般化 FRD (genfrd
) モデルは、調整可能な制御設計ブロックと周波数応答データとして表現される固定の数値コンポーネントの両方を含むシステムを表すために使用します。genfrd
モデルは、調整可能なブロックが固定の周波数応答コンポーネントとどのようにやり取りするのかを記録します。調整可能なコンポーネントをもつ一般化モデルの詳細については、一般化モデルを参照してください。
作成
genfrd
モデルを構築するには、次を行います。
feedback
、series
、parallel
、connect
などのモデル相互接続コマンド、または+
や*
などのモデル算術演算子を使用して、数値frd
モデルを調整可能な制御設計ブロックや制御設計ブロックを含むその他のモデルと組み合わせる。例については、数値周波数応答データ モデルを調整可能なブロックに接続を参照してください。frd
コマンドを使用して、指定した一連の周波数でgenss
モデルをサンプリングする。例については、一般化状態空間モデルの周波数応答のサンプリングを参照してください。genfrd
コマンドを使用して、指定した周波数で任意の数値 LTI モデルをサンプリングする。例については、数値 LTI モデルの一般化 frd モデルへの変換を参照してください。
構文
説明
frdsys = genfrd(
は、さらに sys
,frequency
,frequencyunit
)Frequency
の単位を指定し、fsys
の FrequencyUnit
プロパティを設定します。
frdsys = genfrd(
は、さらに sys
,frequency
,frequencyunit
,timeunit
)fsys
の TimeUnit
プロパティを指定します。この構文は静的モデルを genfrd
形式に変換する場合に便利です。静的モデルには関連付けられた時間単位がないためです。
入力引数
sys
— genfrd
に変換するモデル
動的システム モデル | 静的モデル
genfrd
に変換するモデル。動的システム モデルまたは静的モデルとして指定します。たとえば、以下を sys
に指定できます。
結果の genfrd
モデルには、sys
と同じ制御設計ブロックが含まれます。sys
が数値 LTI モデルや制御設計ブロックがないその他のモデルの場合、結果の genfrd
モデルに制御設計ブロックは含まれません。
プロパティ
Blocks
— 制御設計ブロック
構造体
一般化 LTI モデルまたは一般化行列に含まれる制御設計ブロック。構造体として指定します。Blocks
のフィールド名は、制御設計ブロックの Name
プロパティです。
ドット表記を使用すると、これらの制御設計ブロックのいくつかの属性を変更できます。たとえば、一般化 LTI モデルまたは一般化行列 M
が realp
の調整可能なパラメーター a
を含んでいる場合に a
の現在の値を変更します。
M.Blocks.a.Value = -1;
Frequency
— 周波数値
ベクトル
システム応答をサンプリングする周波数の値。FrequencyUnit
で与えられた単位の値のベクトルとして指定します。
FrequencyUnit
— 周波数ベクトルの単位
'rad/TimeUnit'
(既定値) | 'cycles/TimeUnit'
| 'rad/s'
| 'Hz'
| 'kHz'
| 'MHz'
| 'GHz'
| 'rpm'
Frequency
プロパティの周波数ベクトルの単位。以下のいずれかの値として指定します。
'rad/TimeUnit'
'cycles/TimeUnit'
'rad/s'
'Hz'
'kHz'
'MHz'
'GHz'
'rpm'
単位 'rad/TimeUnit'
と 'cycles/TimeUnit'
は、TimeUnit
プロパティで指定された時間単位に相対的です。
このプロパティを変更してもリサンプリングやデータの変換は行われません。プロパティを変更すると、既存のデータの解釈のみが変更されます。chgFreqUnit
を使用して、データをさまざまな周波数単位に変換します。
InputDelay
— 入力遅延
0
(既定値) | スカラー | Nu
行 1 列のベクトル
各入力チャネルの入力遅延。次のいずれかとして指定します。
スカラー — SISO システムに入力遅延を、または多入力システムのすべての入力に同じ遅延を指定します。
Nu
行 1 列のベクトル — 多入力システムの入力に別々の入力遅延を指定します。Nu
は入力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で入力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で入力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
OutputDelay
— 出力遅延
0
(既定値) | スカラー | Ny
行 1 列のベクトル
各出力チャネルの出力遅延。次のいずれかとして指定します。
スカラー — SISO システムに出力遅延を、または多出力システムのすべての出力に同じ遅延を指定します。
Ny
行 1 列のベクトル — 多出力システムの出力に別々の出力遅延を指定します。Ny
は出力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で出力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で出力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
InputName
— 入力チャネル名
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
入力チャネル名。以下のいずれかとして指定します。
文字ベクトル (単入力モデルの場合)。
文字ベクトルの cell 配列 (多入力モデルの場合)。
''
(いずれの入力チャネルにも名前を指定しない場合)。
あるいは、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てることもできます。たとえば、sys
が 2 入力モデルである場合は、以下のように入力します。
sys.InputName = 'controls';
入力名は自動的に {'controls(1)';'controls(2)'}
へと拡張されます。
省略形表記 u
を使用して、InputName
プロパティを参照できます。たとえば、sys.u
は sys.InputName
と同じです。
InputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
InputUnit
— 入力チャネル単位
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
入力チャネル単位。以下のいずれかとして指定します。
文字ベクトル (単入力モデルの場合)。
文字ベクトルの cell 配列 (多入力モデルの場合)。
''
(いずれの入力チャネルにも単位を指定しない場合)。
InputUnit
を使用して入力信号の単位を指定します。InputUnit
はシステムの動作に影響しません。
InputGroup
— 入力チャネル グループ
構造体
入力チャネル グループ。構造体として指定します。InputGroup
プロパティを使用して、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照します。InputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの入力チャネルです。たとえば、入力チャネル 1
と 2
、および 3
と 5
をそれぞれ含む、controls
および noise
という名前の入力グループを作成するには、次のように入力します。
sys.InputGroup.controls = [1 2]; sys.InputGroup.noise = [3 5];
その後、以下を使用して controls
入力からすべての出力にサブシステムを抽出できます。
sys(:,'controls')
既定では、InputGroup
はフィールドのない構造体です。
OutputName
— 出力チャネル名
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
出力チャネル名。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも名前を指定しない場合)。
あるいは、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てることもできます。たとえば、sys
が 2 出力モデルである場合は、以下のように入力します。
sys.OutputName = 'measurements';
出力名は自動的に {'measurements(1)';'measurements(2)'}
へと拡張されます。
省略形表記 y
を使用して OutputName
プロパティを参照することもできます。たとえば、sys.y
は sys.OutputName
と同じです。
OutputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
OutputUnit
— 出力チャネル単位
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
出力チャネル単位。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも単位を指定しない場合)。
OutputUnit
を使用して出力信号の単位を指定します。OutputUnit
はシステムの動作に影響しません。
OutputGroup
— 出力チャネル グループ
構造体
出力チャネル グループ。構造体として指定します。OutputGroup
を使用して、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照します。OutputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの出力チャネルです。たとえば、出力チャネル 1
、および 3
と 5
をそれぞれ含む、temperature
および measurement
という名前の出力グループを作成します。
sys.OutputGroup.temperature = [1]; sys.OutputGroup.measurement = [3 5];
その後、以下を使用してすべての入力から measurement
出力にサブシステムを抽出できます。
sys('measurement',:)
既定では、OutputGroup
はフィールドのない構造体です。
Notes
— ユーザー指定のテキスト
{}
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO'
とします。
UserData
— ユーザー指定のデータ
[]
(既定値) | 任意の MATLAB® データ型
システムに関連付けるユーザー指定のデータ。任意の MATLAB データ型として指定します。
Name
— システム名
''
(既定値) | 文字ベクトル
システム名。文字ベクトルとして指定します。たとえば、'system_1'
とします。
Ts
— サンプル時間
0
(既定値) | 正のスカラー | -1
サンプル時間。以下として指定します。
0
(連続時間システムの場合)。離散時間システムのサンプリング周期を表す正のスカラー。
Ts
はTimeUnit
プロパティによって指定される時間単位で指定します。-1
(サンプル時間が指定されていない離散時間システムの場合)。
メモ
Ts
を変更してもモデルの離散化やリサンプリングは行われません。
TimeUnit
— 時間変数の単位
'seconds'
(既定値) | 'nanoseconds'
| 'microseconds'
| 'milliseconds'
| 'minutes'
| 'hours'
| 'days'
| 'weeks'
| 'months'
| 'years'
| ...
時間変数の単位。次のいずれかとして指定します。
'nanoseconds'
'microseconds'
'milliseconds'
'seconds'
'minutes'
'hours'
'days'
'weeks'
'months'
'years'
TimeUnit
の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit
を使用して、システム動作を変更せずに時間単位を変換します。
SamplingGrid
— モデル配列のサンプリング グリッド
構造体配列
モデル配列のサンプリング グリッド。構造体配列として指定します。
SamplingGrid
を使用して、モデル配列の各モデルに関連付けられている変数値を追跡します。これには同定された線形時不変 (IDLTI) モデル配列も含まれます。
構造体のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値スカラーでなければならず、サンプル値のすべての配列はモデル配列の次元と一致しなければなりません。
たとえば、t = 0:10
の各時点で線形時変システムのスナップショットを記録することにより、線形モデルの 11 行 1 列の配列 sysarr
を作成することができます。次のコードは線形モデルでの時間サンプルを格納します。
sysarr.SamplingGrid = struct('time',0:10)
同様に、2 つの変数 zeta
と w
を個別にサンプリングすることにより、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
を表示する際、配列の各エントリは対応する zeta
と w
の値を取り込みます。
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™ のコマンド linearize
(Simulink Control Design) および slLinearizer
(Simulink Control Design) により、SamplingGrid
が自動的に入力されます。
既定では、SamplingGrid
はフィールドのない構造体です。
オブジェクト関数
以下のリストには、genfrd
モデルで使用できる関数の代表的なサブセットが含まれています。一般に、一般化状態空間 (genss
) モデルに適用できる関数の多くは genfrd
モデルにも適用できます。genfrd
モデルは、すべての時間領域解析関数で機能しません。
応答の抽出
getIOTransfer | 制御システムの一般化モデルからの閉ループ伝達関数 |
getLoopTransfer | genss モデルで表される制御システムの開ループ伝達関数 |
getSensitivity | 制御システムの一般化モデルからの感度関数 |
getCompSensitivity | 制御システムの一般化モデルからの相補感度関数 |
ブロックおよび値へのアクセス
getValue | 一般化モデルの現在値 |
getBlockValue | 一般化モデルの制御設計ブロックの現在値を取得 |
setBlockValue | 一般化モデルの制御設計ブロックの値の変更 |
周波数応答解析
コントローラーの調整
systune | MATLAB でモデル化された固定構造制御システムの調整 |
例
数値周波数応答データ モデルを調整可能なブロックに接続
固定値の frd
モデルを調整可能な制御設計ブロックと接続して genfrd
モデルを作成します。
周波数応答データを読み込みます。ファイル wtankData.mat
には、周波数のベクトル frequency
とそれに対応するシステムの応答 response
が含まれています。このような周波数応答データは、実際にはシミュレーション、周波数応答推定、測定などによって得られます。このデータを使用して数値 frd
モデルを作成します。
load wtankData.mat
fsys = frd(response,frequency);
size(fsys)
FRD model with 1 outputs, 1 inputs, and 20 frequency points.
tunablePID
制御設計ブロックで表される調整可能な PI コントローラーを作成します。
C = tunablePID('C','PI');
数値 frd
モデルを調整可能な PI コントローラーと接続して、1 つの制御設計ブロック C
を含む一般化 frd
モデルを作成します。
gsys = feedback(fsys*C,1)
Generalized continuous-time FRD model with 1 outputs, 1 inputs, 20 frequency points, and the following blocks: C: Tunable PID controller, 1 occurrences. Type "frd(gsys)" to see the current value and "gsys.Blocks" to interact with the blocks.
一般化状態空間モデルの周波数応答のサンプリング
固有振動数と減衰係数が調整可能なパラメーターである 2 次システムの一般化状態空間モデルを作成します。
wn = realp('wn',3); zeta = realp('zeta',0.8); sys = tf(1,[(1/wn)^2 2*zeta*(1/wn) 1])
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks: wn: Scalar parameter, 3 occurrences. zeta: Scalar parameter, 1 occurrences. Type "ss(sys)" to see the current value and "sys.Blocks" to interact with the blocks.
genfrd
コマンドを使用して、対象の周波数で sys
をサンプリングします。結果は sys
と同じ調整可能なパラメーターをもつ genfrd
モデルになります。
frequency = logspace(-1,2,20); fsys = genfrd(sys,frequency)
Generalized continuous-time FRD model with 1 outputs, 1 inputs, 20 frequency points, and the following blocks: wn: Scalar parameter, 3 occurrences. zeta: Scalar parameter, 1 occurrences. Type "frd(fsys)" to see the current value and "fsys.Blocks" to interact with the blocks.
genfrd
モデル fsys
と genss
モデル sys
の対応を確認するには、それらの調整可能なパラメーターをそれぞれの現在の値に設定して両方のモデルの応答をプロットします。
bode(sys,"-",fsys,"g*") legend
ans = Legend (sys, fsys) with properties: String: {'sys' 'fsys'} Location: 'northeast' Orientation: 'vertical' FontSize: 8.1000 Position: [0.8116 0.8583 0.1429 0.0884] Units: 'normalized' Use GET to show all properties
数値 LTI モデルの一般化 frd モデルへの変換
数値伝達関数モデルを作成し、それを genfrd
形式に変換します。これを行うには、genfrd
コマンドを使用して、応答をサンプリングする周波数のベクトルを指定します。
sys = tf(1,[1 1]); frequency = logspace(-1,2,20); fsys = genfrd(sys,frequency)
Generalized continuous-time FRD model with 1 outputs, 1 inputs, 20 frequency points, and no blocks. Type "frd(fsys)" to see the current value and "fsys.Blocks" to interact with the blocks.
結果のモデルは genfrd
モデルになります。ただし、fsys
に制御設計ブロックは含まれません。
fblocks = fsys.Blocks
fblocks = struct with no fields.
バージョン履歴
R2011a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)