モデル タイプ間の変換
モデル タイプ間の明示的変換
ターゲットのモデル タイプのモデル作成コマンドを使用して、1 つの表現から別の表現にモデルを明示変換することができます。たとえば、ss
を使用して状態空間表現に変換し、pid
を使用して並列形式 PID に変換します。特定のモデル タイプへの変換の詳細は、そのモデル タイプのリファレンス ページを参照してください。
一般に、任意のモデル タイプから任意のモデル タイプに変換できます。ただし、いくつかの制限事項があります。たとえば、次の項目は変換できません。
frd
から、ss
、tf
、zpk
などの解析モデル タイプへの変換 (System Identification Toolbox™ ソフトウェアでシステム同定を行う場合を除く)。内部遅延をもつ
ss
モデルのtf
またはzpk
への変換。
数値 LTI モデルと一般化 LTI モデルは変換できます。
一般化 LTI モデルから数値 LTI モデルへの変換は、現在の (ノミナル) 値で任意の制御設計ブロックを評価します。
数値 LTI モデルから一般化 LTI モデルへの変換は、空の
Blocks
プロパティのある一般化 LTI モデルを作成します。
モデル タイプ間の自動変換
一部のアルゴリズムは、モデル オブジェクトの 1 つのタイプに対してのみ機能します。たとえば、関数 c2d
で使用するゼロ次ホールドの離散化に対するアルゴリズムは、状態空間モデルに対してのみ機能します。同様に、tfdata
や piddata
などのコマンドには、モデルの特別なタイプ (それぞれ tf
または pid
) が必要です。便宜上、このようなコマンドは入力モデルを適切なタイプまたは必要なタイプのモデルに自動的に変換します。以下に例を示します。
sys = ss(0,1,1,0) [num,den] = tfdata(sys)
関数 tfdata
によって状態空間モデル sys
を伝達関数に自動変換し、分子と分母のデータを返します。
状態空間形式への変換は、一意的には定義されません。このため、状態空間への自動変換は、状態座標の選択によって結果が変わる場合には行われません。たとえば、initial
コマンドと kalman
コマンドには、状態空間モデルが必要です。
推奨される使用表現
任意のモデル タイプで数値システムを表すことができます。しかし、数値 LTI モデル タイプは、数値計算上、同じ精度ではありません。一般に、次の理由から状態空間 (ss
) モデルまたは周波数応答データ (frd
) モデルを使用することを推奨します。
高次伝達関数 (
tf
モデルまたはzpk
モデル) での計算精度は、特に MIMO モデルや高次システムでは、低くなりがちです。伝達関数形式への変換を行う場合は、精度が失われることがあります。ss
を使用してtf
モデルまたはzpk
モデルを状態空間に変換すると、自動的にバランス化とスケーリング処理が行われます。バランス化とスケーリングを行うと、モデルに関する計算の数値的精度が高まります。状態空間モデルのバランス化とスケーリングの詳細は、状態空間モデルのスケーリングを参照してください。
さらに、モデル タイプ間で変換を繰り返していると、状態や次数が追加されたり、数値誤差を招いたりすることがあります。たとえば、状態空間への変換は一意的に定義されません。また、MIMO モデルでは最小実現も保証されません。したがって、特定の状態空間モデル sys
がある場合は、
ss(tf(sys))
これは、異なる状態空間行列を含むモデルを出力するか、MIMO の場合は状態数が異なることもあります。