複数の入力を持つシス​テムをlinmodで​線形化しても1つ目の​入力に対する伝達関数​しか得られません。任​意の入力に対する伝達​関数を得るにはどうす​れば良いですか?

4 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
下図のSimulinkモデルを出力引数を2つにしてlinmod関数で線形化した場合(下記コマンド参照)に、1つ目の入力に対する伝達関数が得られます。
ページ下部の関連ドキュメントより、サンプルモデルのダウンロードが可能です:linsamp.mdl
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし「対象をファイルに保存」を選択してダウンロードを行ってください。
>> [num,den]=linmod('linsamp')
num =
0 1 1 0
0 0 0 0
den =
1 1 0 0
2つ目の入力に対する伝達関数を得るにはどうすれば良いですか?

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
下記の2つの場合について紹介します。
  1. Simulink Control Designの機能を使用する場合
  2. linmod関数を使用する場合
1. Simulink Control Designの機能を使用する場合
Simulink Control Design の GUI ベースの操作による線形化、入出力ポイントを明示的に指定して、線形化できます。
入出力の設定について、下記関連ソリューションの 1.1 に記載されています。
線形化で得られたシステムを、ワークスペースへエクスポートすることで伝達関数を得ることができます。
2. linmod関数を使用する場合
出力引数を[num,den]とした場合にはlinmod コマンド実行時に入力ポイント・出力ポイントを指定して線形化することはできませんが、出力引数を[a,b,c,d]として全入出力についてシステムを線形化した後に、ss2tf関数を用いて入力ポイントを指定して切り出すことができます。
サンプルモデルの場合、2つの Outport がありますので、各々の Outport に対して、線形化した結果を得たい場合は、以下のコマンド実行で結果を得ることが可能です。
[a,b,c,d] = linmod('linsamp'); % システム全体の線形化
[num1,den1] = ss2tf(a,b,c,d,1) % 入力1 の伝達関数の係数を取得
[num2,den2] = ss2tf(a,b,c,d,2) % 入力2 の伝達関数の係数を取得
入出力と対応する伝達関数の係数
 入出力       分子係数   分母係数
--------------------------------------------
 入力1・出力1   num1(1:)    den1
 入力1・出力2   num1(2:)    den1
 入力2・出力1   num2(1:)    den2
 入力2・出力2   num2(2:)    den2

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAdditional Math and Discrete についてさらに検索

タグ

タグが未入力です。

製品


リリース

R14SP1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!