Main Content

tf

説明

tf を使用して、実数値または複素数値の伝達関数モデルを作成するか、または動的システム モデルを伝達関数形式に変換します。

伝達関数は線形時不変システムの周波数領域表現です。たとえば、伝達関数 sys(s) = N(s)/D(s) で表される連続時間 SISO 動的システムについて考えます。ここで、s = jw であり、N(s)D(s) はそれぞれ分子多項式および分母多項式と呼ばれます。tf モデル オブジェクトは SISO または MIMO 伝達関数を連続時間または離散時間で表現できます。

伝達関数モデル オブジェクトを作成するには、その係数を直接指定するか、あるいは (状態空間モデル ss などの) 別のタイプのモデルを伝達関数形式に変換することができます。詳細については、伝達関数を参照してください。

tf を使用して、一般化状態空間 (genss) モデルや不確かさをもつ状態空間 (uss (Robust Control Toolbox)) モデルを作成することもできます。

作成

説明

sys = tf(numerator,denominator) は、Numerator プロパティと Denominator プロパティを設定して連続時間の伝達関数モデルを作成します。たとえば、伝達関数 sys(s) = N(s)/D(s) で表される連続時間 SISO 動的システムについて考えます。入力引数の numeratordenominator は、それぞれ N(s)D(s) の係数です。

sys = tf(numerator,denominator,ts) は、NumeratorDenominatorTs の各プロパティを設定して離散時間の伝達関数モデルを作成します。たとえば、伝達関数 sys(z) = N(z)/D(z) で表される離散時間 SISO 動的システムについて考えます。入力引数の numeratordenominator は、それぞれ N(z)D(z) の係数です。サンプル時間を未指定のままにするには、ts 入力引数を -1 に設定します。

sys = tf(numerator,denominator,ltiSys) は、サンプル時間も含め、動的システム モデル ltiSys から継承したプロパティをもつ伝達関数モデルを作成します。

sys = tf(m) は、静的ゲイン m を表す伝達関数モデルを作成します。

sys = tf(___,Name,Value) は、前述の任意の入力引数の組み合わせについて Name,Value のペアの引数を 1 つ以上使用して、伝達関数モデルのプロパティを設定します。

sys = tf(ltiSys) は、動的システム モデル ltiSys を伝達関数モデルに変換します。

sys = tf(ltiSys,component) は、ltiSys の指定された component を伝達関数形式に変換します。この構文を使用するのは、ltiSys が同定された線形時不変 (LTI) モデルである場合のみです。

s = tf('s') は、連続時間の伝達関数モデルを作成するための有理式で使用できる、特殊な変数 s を作成します。有理式を使用すると、多項式係数を指定するよりも簡単でより直観的になる場合があります。

z = tf('z',ts) は、離散時間の伝達関数モデルを作成するための有理式で使用できる、特殊な変数 z を作成します。サンプル時間を未指定のままにするには、ts 入力引数を -1 に設定します。

入力引数

すべて展開する

伝達関数の分子係数。以下として指定します。

  • 多項式係数の行ベクトル。

  • 行ベクトルからなる NyNu 列の cell 配列。これは MIMO 伝達関数を指定し、Ny は出力の数、Nu は入力の数です。

伝達関数を作成するとき、分子係数は降べきの順に指定します。たとえば、伝達関数の分子が 3s^2-4s+5 の場合、numerator[3 -4 5] として指定します。分子が 2z-1 である離散時間の伝達関数の場合、numerator[2 -1] に設定します。

tf オブジェクトのプロパティでもあります。詳細については、Numerator を参照してください。

分母係数。以下として指定します。

  • 多項式係数の行ベクトル。

  • 行ベクトルからなる NyNu 列の cell 配列。これは MIMO 伝達関数を指定し、Ny は出力の数、Nu は入力の数です。

伝達関数を作成するとき、分母係数は降べきの順に指定します。たとえば、伝達関数の分母が 7s^2+8s-9 である場合、denominator[7 8 -9] として指定します。分母が 2z^2+1 である離散時間の伝達関数の場合、denominator[2 0 1] に設定します。

tf オブジェクトのプロパティでもあります。詳細については、Denominator を参照してください。

スカラーとして指定されたサンプル時間。tf オブジェクトのプロパティでもあります。詳細については、Tsを参照してください。

動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

  • tf モデル、zpk モデル、ss モデル、または pid モデルなどの連続時間または離散時間の数値 LTI モデル。

  • genssuss (Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。(不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。)

    結果の伝達関数は次を仮定します。

    • 調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。

    • 不確かさをもつ制御設計ブロックについてはモデルのノミナル値。

  • idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox)idpoly (System Identification Toolbox)idgrey (System Identification Toolbox) モデルなどの、同定された LTI モデル。同定されたモデルの変換する成分を選択するには、component を指定します。component を指定しない場合、tf は、同定されたモデルの測定成分を既定で変換します。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。)

静的ゲイン。スカラーまたは行列として指定します。システムの静的ゲインまたは定常状態ゲインは、定常状態の条件下における出力の入力に対する比率を表します。

同定されたモデルの変換対象とするコンポーネント。次のいずれかとして指定します。

  • 'measured'sys の測定成分を変換します。

  • 'noise'sys のノイズ成分を変換します。

  • 'augmented'sys の測定成分とノイズ成分の両方を変換します。

component が適用されるのは、sys が同定された LTI モデルである場合のみです。

同定された LTI モデルおよびその測定成分とノイズ成分の詳細については、同定された LTI モデルを参照してください。

出力引数

すべて展開する

出力システム モデル。以下として返されます。

  • 入力引数 numerator および denominator が数値配列である場合は、伝達関数 (tf) モデル オブジェクト。

  • 入力引数 numerator または denominatorrealp パラメーターまたは一般化行列 (genmat) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss) オブジェクト。例については、調整可能なローパス フィルターを参照してください。

  • 入力引数 numerator または denominator に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss) オブジェクト。不確かさをもつモデルを使用するには Robust Control Toolbox ソフトウェアが必要です。例については、Transfer Function with Uncertain Coefficients (Robust Control Toolbox)を参照してください。

プロパティ

すべて展開する

分子係数。以下として指定します。

  • 降べきの順 (Variable's''z''p'、または 'q' の場合) か昇べきの順 (Variable'z^-1' または 'q^-1' の場合) に並べた多項式係数の行ベクトル。

  • 行ベクトルからなる NyNu 列の cell 配列。これは MIMO 伝達関数を指定し、Ny は出力の数、Nu は入力の数です。cell 配列の各要素は、与えられた入出力のペアに対し分子係数を指定します。NumeratorDenominator の両方を cell 配列として指定する場合、これらの次元は同じでなければなりません。

Numerator の係数は実数値または複素数値にできます。

分母係数。以下として指定します。

  • 降べきの順 (Variable's''z''p'、または 'q' の場合) か昇べきの順 (Variable'z^-1' または 'q^-1' の場合) に並べた多項式係数の行ベクトル。

  • 行ベクトルからなる NyNu 列の cell 配列。これは MIMO 伝達関数を指定し、Ny は出力の数、Nu は入力の数です。cell 配列の各要素は、与えられた入出力の組み合わせに対し分子係数を指定します。NumeratorDenominator の両方を cell 配列として指定する場合、これらの次元は同じでなければなりません。

MIMO 伝達関数のすべての SISO エントリが同じ分母をもつ場合、Denominator を行ベクトル、Numerator を cell 配列として指定することができます。

Denominator の係数は実数値または複素数値にできます。

伝達関数表示変数。以下のいずれかとして指定します。

  • 's' — 連続時間モデルの場合の既定値

  • 'z' — 離散時間モデルの既定値

  • 'p''s' と等価

  • 'q''z' と等価

  • 'z^-1''z' の逆

  • 'q^-1''z^-1' と等価

Variable の値は表示に反映され、また、離散時間モデルの Numerator および Denominator 係数の解釈にも影響を与えます。

  • Variable の値が 's''z''p'、または 'q' の場合、係数は変数の降べきの順に並べられる。たとえば、行ベクトル [ak ... a1 a0] について考えます。多項式の次数は akzk+...+a1z+a0 として指定されます。

  • Variable の値が 'z^-1' または 'q^-1' の場合、係数は変数の昇べきの順に並べられる。たとえば、行ベクトル [b0 b1 ... bk] について考えます。多項式の次数は b0+b1z1+...+bkzk として指定されます。

例については、離散時間伝達関数における多項式の順序付けの指定有理式を使用した伝達関数モデル、および有理式を使用した離散時間の伝達関数モデルを参照してください。

伝達遅延。次のいずれかとして指定します。

  • スカラー — SISO システムに伝達遅延を、または MIMO システムのすべての入出力ペアに対して同じ伝達遅延を指定します。

  • NyNu 列の配列 — MIMO システムの入出力ペアごとに別々の伝達遅延を指定します。ここで、Ny は出力の数、Nu は入力の数です。

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

各入力チャネルの入力遅延。次のいずれかとして指定します。

  • スカラー — SISO システムに入力遅延を、または多入力システムのすべての入力に同じ遅延を指定します。

  • Nu 行 1 列のベクトル — 多入力システムの入力に別々の入力遅延を指定します。Nu は入力の数です。

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

詳細については、線形システムでのむだ時間を参照してください。

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

  • スカラー — SISO システムに出力遅延を、または多出力システムのすべての出力に同じ遅延を指定します。

  • Ny 行 1 列のベクトル — 多出力システムの出力に別々の出力遅延を指定します。Ny は出力の数です。

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

詳細については、線形システムでのむだ時間を参照してください。

サンプル時間。以下として指定します。

  • 0 (連続時間システムの場合)。

  • 離散時間システムのサンプリング周期を表す正のスカラー。TsTimeUnit プロパティによって指定される時間単位で指定します。

  • -1 (サンプル時間が指定されていない離散時間システムの場合)。

メモ

Ts を変更してもモデルの離散化やリサンプリングは行われません。連続時間表現と離散時間表現の間の変換を行うには、c2dd2c を使用します。離散時間システムのサンプル時間を変更するには、d2d を使用します。

時間変数の単位。次のいずれかとして指定します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

TimeUnit の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

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

  • 文字ベクトル (単入力モデルの場合)。

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

  • '' (いずれの入力チャネルにも名前を指定しない場合)。

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

sys.InputName = 'controls';

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

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

InputName の使用目的は次のとおりです。

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

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

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

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

  • 文字ベクトル (単入力モデルの場合)。

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

  • '' (いずれの入力チャネルにも単位を指定しない場合)。

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

入力チャネル グループ。構造体として指定します。InputGroup プロパティを使用して、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照します。InputGroup のフィールド名はグループ名であり、フィールドの値は各グループの入力チャネルです。たとえば、入力チャネル 12、および 35 をそれぞれ含む、controls および noise という名前の入力グループを作成するには、次のように入力します。

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

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

sys(:,'controls')

既定では、InputGroup はフィールドのない構造体です。

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

  • 文字ベクトル (単出力モデルの場合)。

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

  • '' (いずれの出力チャネルにも名前を指定しない場合)。

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

sys.OutputName = 'measurements';

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

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

OutputName の使用目的は次のとおりです。

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

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

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

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

  • 文字ベクトル (単出力モデルの場合)。

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

  • '' (いずれの出力チャネルにも単位を指定しない場合)。

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

出力チャネル グループ。構造体として指定します。OutputGroup を使用して、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照します。OutputGroup のフィールド名はグループ名であり、フィールドの値は各グループの出力チャネルです。たとえば、出力チャネル 1、および 35 をそれぞれ含む、temperature および measurement という名前の出力グループを作成します。

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

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

sys('measurement',:)

既定では、OutputGroup はフィールドのない構造体です。

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

システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO' とします。

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

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

SamplingGrid を使用して、モデル配列の各モデルに関連付けられている変数値を追跡します。これには同定された線形時不変 (IDLTI) モデル配列も含まれます。

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

たとえば、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™ のコマンド linearize (Simulink Control Design) および slLinearizer (Simulink Control Design) により、SamplingGrid が自動的に入力されます。

既定では、SamplingGrid はフィールドのない構造体です。

オブジェクト関数

以下のリストには、tf モデルで使用できる関数の代表的なサブセットが含まれています。一般に、動的システム モデルに適用できるすべての関数は tf オブジェクトに適用できます。

すべて展開する

step動的システムのステップ応答
impulse動的システムのインパルス応答プロット、インパルス応答データ
lsim任意の入力に対する動的システムの時間応答シミュレーション データを計算
bode動的システムのボード周波数応答
nyquist動的システムのナイキスト応答
nichols動的システムのニコルス応答
bandwidth周波数応答帯域幅
pole動的システムの極
zeroSISO 動的システムの零点とゲイン
pzplotPlot pole-zero map of dynamic system
marginゲイン余裕、位相余裕、および交差周波数
zpk零点-極-ゲイン モデル
ss状態空間モデル
c2d連続時間から離散時間へモデルを変換
d2c離散時間から連続時間へモデルを変換
d2d離散時間モデルのリサンプリング
feedback複数のモデルのフィードバック接続
connect動的システムのブロック線図相互接続
series2 つのモデルの直列接続
parallel2 つのモデルの並列接続
pidtune線形プラント モデルのための PID 調整アルゴリズム
rlocus動的システムの根軌跡
lqr線形 2 次レギュレーター (LQR) 設計
lqg線形 2 次ガウシアン (LQG) 設計
lqi線形 2 次積分制御
kalman状態の推定用のカルマン フィルターの設計

すべて折りたたむ

この例では、次の SISO 伝達関数モデルについて考えます。

sys(s)=12s2+3s+4.

s の降べきの順に分子係数と分母係数を指定して、伝達関数モデルを作成します。

numerator = 1;
denominator = [2,3,4];
sys = tf(numerator,denominator)
sys =
 
         1
  ---------------
  2 s^2 + 3 s + 4
 
Continuous-time transfer function.

この例では、次の離散時間 SISO 伝達関数モデルについて考えます。

sys(z)=2z4z3+3z-1.

z の降べきの順に分子係数と分母係数を指定し、サンプル時間を 0.1 秒に指定します。離散時間伝達関数モデルを作成します。

numerator = [2,0];
denominator = [4,0,3,-1];
ts = 0.1;
sys = tf(numerator,denominator,ts)
sys =
 
        2 z
  ---------------
  4 z^3 + 3 z - 1
 
Sample time: 0.1 seconds
Discrete-time transfer function.

この例では、既知の固有振動数と減衰比をもつ 2 次システムを表す伝達関数モデルについて考えます。

2 次システムの伝達関数を減衰比 ζ と固有振動数 ω0 で表現すると、次のようになります。

sys(s)=ω02s2+2ζω0s+ω02.

減衰比 ζ = 0.25 および固有振動数 ω0 = 3 rad/s を仮定して、2 次伝達関数を作成します。

zeta = 0.25;
w0 = 3;
numerator = w0^2;
denominator = [1,2*zeta*w0,w0^2];
sys = tf(numerator,denominator)
sys =
 
         9
  ---------------
  s^2 + 1.5 s + 9
 
Continuous-time transfer function.

ステップ入力に対するこの伝達関数の応答を調べます。

stepplot(sys)

MATLAB figure

プロットでは、低減衰比の 2 次システムで予想されるリングダウンが示されています。

離散時間、多入力、多出力のモデルの伝達関数を作成します。

sys(z)=[1z+0.3zz+0.3-z+2z+0.33z+0.3]

サンプル時間は ts = 0.2 秒です。

分母係数を 2 行 2 列の行列として指定します。

numerators = {1 [1 0];[-1 2] 3};

共通分母の係数を行ベクトルとして指定します。

denominator = [1 0.3];

離散時間 MIMO 伝達関数モデルを作成します。

ts = 0.2;
sys = tf(numerators,denominator,ts)
sys =
 
  From input 1 to output...
          1
   1:  -------
       z + 0.3
 
       -z + 2
   2:  -------
       z + 0.3
 
  From input 2 to output...
          z
   1:  -------
       z + 0.3
 
          3
   2:  -------
       z + 0.3
 
Sample time: 0.2 seconds
Discrete-time transfer function.

MIMO 伝達関数の作成の詳細については、MIMO 伝達関数を参照してください。

この例では、SISO 伝達関数モデルを連結して MIMO 伝達関数モデルを作成します。次の単入力 2 出力の伝達関数について考えます。

sys(s)=[s-1s+1s+2s2+4s+5].

SISO 要素を連結して MIMO 伝達関数モデルを指定します。

sys1 = tf([1 -1],[1 1]);		
sys2 = tf([1 2],[1 4 5]);
sys = [sys1;sys2]
sys =
 
  From input to output...
       s - 1
   1:  -----
       s + 1
 
           s + 2
   2:  -------------
       s^2 + 4 s + 5
 
Continuous-time transfer function.

MIMO 伝達関数の作成の詳細については、MIMO 伝達関数を参照してください。

この例では、有理式を使用して連続時間の伝達関数モデルを作成します。有理式を使用すると、分子と分母の多項式係数を指定するよりも簡単でより直観的になる場合があります。

以下のシステムを考えます。

sys(s)=ss2+2s+10.

伝達関数モデルを作成するには、まず stf オブジェクトとして指定します。

s = tf('s')
s =
 
  s
 
Continuous-time transfer function.

有理式で s を使用して伝達関数モデルを作成します。

sys = s/(s^2 + 2*s + 10)
sys =
 
        s
  --------------
  s^2 + 2 s + 10
 
Continuous-time transfer function.

この例では、有理式を使用して離散時間の伝達関数モデルを作成します。有理式を使用すると、多項式係数を指定するよりも簡単でより直観的になる場合があります。

以下のシステムを考えます。

sys(z)=z-1z2-1.85z+0.9.Discrete-time transfer function

伝達関数モデルを作成するには、まず ztf オブジェクトとして指定し、サンプル時間 Ts を指定します。

ts = 0.1;
z = tf('z',ts)
z =
 
  z
 
Sample time: 0.1 seconds
Discrete-time transfer function.

有理式で z を使用して伝達関数モデルを作成します。

sys = (z - 1) / (z^2 - 1.85*z + 0.9)
sys =
 
        z - 1
  ------------------
  z^2 - 1.85 z + 0.9
 
Sample time: 0.1 seconds
Discrete-time transfer function.

この例では、別の伝達関数モデルから継承されたプロパティをもつ伝達関数モデルを作成します。次の 2 つの伝達関数について考えます。

sys1(s)=2ss2+8sandsys2(s)=s-17s4+2s3+9.

この例では、TimeUnit プロパティと InputDelay プロパティを 'minutes' に設定して sys1 を作成します。

numerator1 = [2,0];
denominator1 = [1,8,0];
sys1 = tf(numerator1,denominator1,'TimeUnit','minutes','InputUnit','minutes')
sys1 =
 
     2 s
  ---------
  s^2 + 8 s
 
Continuous-time transfer function.
propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1x2 cell
    {'minutes'}    {'minutes'}

sys1 から継承されたプロパティをもつ 2 つ目の伝達関数モデルを作成します。

numerator2 = [1,-1];
denominator2 = [7,2,0,0,9];
sys2 = tf(numerator2,denominator2,sys1)
sys2 =
 
        s - 1
  -----------------
  7 s^4 + 2 s^3 + 9
 
Continuous-time transfer function.
propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1x2 cell
    {'minutes'}    {'minutes'}

伝達関数モデル sys2sys1 と同じプロパティをもつことを確認してください。

for ループを使用して伝達関数モデルの配列を指定できます。

まず、伝達関数配列にゼロを事前に割り当てます。

sys = tf(zeros(1,1,3));

最初の 2 つのインデックスはモデルの出力と入力の数を表し、3 つ目のインデックスは配列内のモデルの数を表します。

for ループで有理式を使用して伝達関数モデルの配列を作成します。

s = tf('s');                                                  
for k = 1:3                                                             
    sys(:,:,k) = k/(s^2+s+k);                                          
end
sys
sys(:,:,1,1) =
 
       1
  -----------
  s^2 + s + 1
 

sys(:,:,2,1) =
 
       2
  -----------
  s^2 + s + 2
 

sys(:,:,3,1) =
 
       3
  -----------
  s^2 + s + 3
 
3x1 array of continuous-time transfer functions.

この例では、次の状態空間モデルの伝達関数を計算します。

A=[-2-11-2],B=[112-1],C=[10],D=[01].

状態空間行列を使用して状態空間モデルを作成します。

A = [-2 -1;1 -2];
B = [1 1;2 -1];
C = [1 0];
D = [0 1];
ltiSys = ss(A,B,C,D);

状態空間モデル ltiSys を伝達関数に変換します。

sys = tf(ltiSys)
sys =
 
  From input 1 to output:
        s
  -------------
  s^2 + 4 s + 5
 
  From input 2 to output:
  s^2 + 5 s + 8
  -------------
  s^2 + 4 s + 5
 
Continuous-time transfer function.

この例では、同定された多項式モデルの測定成分とノイズ成分を 2 つの別々の伝達関数に抽出します。

identifiedModel.mat の Box-Jenkins 多項式モデル ltiSys を読み込みます。

load('identifiedModel.mat','ltiSys');

ltiSys は同定された y(t)=BFu(t)+CDe(t) 形式の離散時間モデルで、BF は測定成分、CD はノイズ成分を表します。

測定成分とノイズ成分を伝達関数として抽出します。

sysMeas = tf(ltiSys,'measured') 
sysMeas =
 
  From input "u1" to output "y1":
            -0.1426 z^-1 + 0.1958 z^-2
  z^(-2) * ----------------------------
           1 - 1.575 z^-1 + 0.6115 z^-2
 
Sample time: 0.04 seconds
Discrete-time transfer function.
sysNoise = tf(ltiSys,'noise')
sysNoise =
 
  From input "v@y1" to output "y1":
           0.04556 + 0.03301 z^-1
  ----------------------------------------
  1 - 1.026 z^-1 + 0.26 z^-2 - 0.1949 z^-3
 
Input groups:        
    Name     Channels
    Noise       1    
                     
Sample time: 0.04 seconds
Discrete-time transfer function.

測定成分はプラント モデルとすることができ、ノイズ成分は制御システム設計の外乱モデルとして使用できます。

伝達関数モデル オブジェクトには、モデルが何を表しているかを見失わないために役立つモデル データが含まれています。たとえば、モデルの入力と出力に名前を割り当てることができます。

次の連続時間 MIMO 伝達関数モデルについて考えます。

sys(s)=[s+1s2+2s+21s]

モデルには 1 つの入力 - 電流と、2 つの出力 - トルクと角速度があります。

まず、モデルの分子係数と分母係数を指定します。

numerators = {[1 1] ; 1};
denominators = {[1 2 2] ; [1 0]};

入力名と出力名を指定して、伝達関数モデルを作成します。

sys = tf(numerators,denominators,'InputName','Current',...
        'OutputName',{'Torque' 'Angular Velocity'})
sys =
 
  From input "Current" to output...
                s + 1
   Torque:  -------------
            s^2 + 2 s + 2
 
                      1
   Angular Velocity:  -
                      s
 
Continuous-time transfer function.

この例では、'Variable' プロパティを使用して離散時間伝達関数モデルの多項式の順序付けを指定します。

サンプル時間が 0.1 秒の、次の離散時間伝達関数について考えます。

sys1(z)=z2z2+2z+3sys2(z-1)=11+2z-1+3z-2.

z 係数を指定して最初の離散時間伝達関数を作成します。

numerator = [1,0,0];
denominator = [1,2,3];
ts = 0.1;
sys1 = tf(numerator,denominator,ts)
sys1 =
 
       z^2
  -------------
  z^2 + 2 z + 3
 
Sample time: 0.1 seconds
Discrete-time transfer function.

sys1 の係数は z の降べきの順に並べられます。

tf は 'Variable' プロパティの値に基づいて表記を切り替えます。sys2sys1 の逆伝達関数モデルであるため、'Variable' を 'z^-1' に指定して同じ分子係数と分母係数を使用します。

sys2 = tf(numerator,denominator,ts,'Variable','z^-1')
sys2 =
 
           1
  -------------------
  1 + 2 z^-1 + 3 z^-2
 
Sample time: 0.1 seconds
Discrete-time transfer function.

これで、sys2 の係数は z^-1 の昇べきの順に並べられます。

異なる表記に基づいて、'Variable' プロパティを使用して伝達関数モデルにおける多項式の順序付けを指定できます。

この例では、1 つの調整可能なパラメーター a をもつローパス フィルターを作成します。

F=as+a

tunableTF ブロックの分子と分母の係数が独立しているため、tunableTF を使用して F を表すことはできません。代わりに、調整可能な実数パラメーター オブジェクト realp を使って F を構成します。

初期値 10 の実数の調整可能なパラメーターを作成します。

a = realp('a',10)
a = 
       Name: 'a'
      Value: 10
    Minimum: -Inf
    Maximum: Inf
       Free: 1

Real scalar parameter.

調整可能なローパス フィルター F を作成するには、tf を使用します。

numerator = a;
denominator = [1,a];
F = tf(numerator,denominator)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 1 states, and the following blocks:
  a: Scalar parameter, 2 occurrences.

Type "ss(F)" to see the current value and "F.Blocks" to interact with the blocks.

F は、Blocks プロパティに調整可能なパラメーター a をもつ genss オブジェクトです。F を他の調整可能なモデルまたは数値モデルと接続して、より複雑な制御システムのモデルを作成できます。例については、調整可能なコンポーネントを含む制御システムを参照してください。

この例では、静的ゲインの MIMO 伝達関数モデルを作成します。

次の 2 入力、2 出力の静的ゲイン行列 m について考えます。

m=[2435]

ゲイン行列を指定して静的ゲイン伝達関数モデルを作成します。

m = [2,4;...
    3,5];
sys1 = tf(m)
sys1 =
 
  From input 1 to output...
   1:  2
 
   2:  3
 
  From input 2 to output...
   1:  4
 
   2:  5
 
Static gain.

上記で取得した静的ゲイン伝達関数モデル sys1 を使用して、別の伝達関数モデルとカスケードさせることができます。

この例では、2 入力 2 出力の離散伝達関数モデルをもう 1 つ作成し、関数 series を使用して 2 つのモデルを接続します。

numerators = {1,[1,0];[-1,2],3};
denominator = [1,0.3];
ts = 0.2;
sys2 = tf(numerators,denominator,ts)
sys2 =
 
  From input 1 to output...
          1
   1:  -------
       z + 0.3
 
       -z + 2
   2:  -------
       z + 0.3
 
  From input 2 to output...
          z
   1:  -------
       z + 0.3
 
          3
   2:  -------
       z + 0.3
 
Sample time: 0.2 seconds
Discrete-time transfer function.
sys = series(sys1,sys2)
sys =
 
  From input 1 to output...
       3 z^2 + 2.9 z + 0.6
   1:  -------------------
       z^2 + 0.6 z + 0.09
 
       -2 z^2 + 12.4 z + 3.9
   2:  ---------------------
        z^2 + 0.6 z + 0.09
 
  From input 2 to output...
       5 z^2 + 5.5 z + 1.2
   1:  -------------------
       z^2 + 0.6 z + 0.09
 
       -4 z^2 + 21.8 z + 6.9
   2:  ---------------------
        z^2 + 0.6 z + 0.09
 
Sample time: 0.2 seconds
Discrete-time transfer function.

制限

  • 伝達関数モデルは、数値計算に適していません。作成後は他のモデルとの組み合わせやモデルの変換を行う前に、状態空間形式に変換してください。その後、結果のモデルを検査目的で伝達関数形式に変換し直すことができます。

  • 同定された非線形モデルは tf を使用して伝達関数モデルに直接変換できません。伝達関数モデルを取得するには、次を行います。

    1. linapp (System Identification Toolbox)idnlarx/linearize (System Identification Toolbox)、または idnlhw/linearize (System Identification Toolbox) を使用して、同定された非線形モデルを同定された LTI モデルに変換します。

    2. 次に、結果のモデルを tf を使用して伝達関数モデルに変換します。

バージョン履歴

R2006a より前に導入