MIMO フィードバック ループ
この例では、MIMO フィードバック ループの閉ループ応答を 3 つの異なったやり方で取得する方法を示します。
この例では、次のブロック線図の MIMO フィードバック ループにおける Azref から Az への応答を取得します。

以下の 3 つの方法のいずれかを使用して、閉ループ応答を計算できます。
connectを使用した名前ベースの相互接続feedbackを使用した名前ベースの相互接続feedbackを使用したインデックス ベースの相互接続
これらの方法のうちアプリケーションに最適なものを使用できます。
プラント Aerodyn とコントローラー Autopilot を MATLAB® ワークスペースに読み込みます。これらのモデルは、データファイル MIMOfeedback.mat に保存されています。
load('MIMOfeedback.mat')Aerodyn は 4 入力 7 出力の状態空間 (ss) モデルです。Autopilot は 5 入力 1 出力の ss モデルです。両方のモデルの入力名と出力名はブロック線図で示すように表示されます。
connect を使用して、Azref から Az への閉ループ応答を計算します。
T1 = connect(Autopilot,Aerodyn,'Azref','Az');
Warning: The following block inputs are not used: Rho,a,Thrust.
Warning: The following block outputs are not used: Xe,Ze,Altitude.
関数 connect は、名前の一致する入力と出力を連結することによりモデルを結合します。connect の最後の 2 つの引数は結果のモデルの入力信号と出力信号を指定します。したがって、T1 は入力 Azref と出力 Az をもつ状態空間モデルです。関数 connect は、Autopilot および Aerodyn の他の入出力を無視します。
feedback コマンドで名前ベースの相互接続を使用して、Azref から Az への閉ループ応答を計算します。モデルの入出力名を使用して、Aerodyn と Autopilot 間の相互接続を指定します。
関数 feedback を使用する際には、閉ループ システムを、開ループのプラントとコントローラーの組み合わせ L と、対角のユニティゲイン フィードバック要素 K 間のフィードバック相互接続とみなします。以下のブロック線図はこの相互接続を示します。

L = series(Autopilot,Aerodyn,'Fin'); FeedbackChannels = {'Alpha','Mach','Az','q'}; K = ss(eye(4),'InputName',FeedbackChannels,... 'OutputName',FeedbackChannels); T2 = feedback(L,K,'name',+1);
閉ループ モデル T2 は L と K の正のフィードバック相互接続を表します。'name' オプションを指定すると、feedback は入力と出力の名前を一致させることにより、L と K を接続します。
T2 は 5 入力 7 出力の状態空間モデルです。Azref から Az への閉ループ応答は T2('Az','Azref') です。
インデックスを使用して Aerodyn と Autopilot 間の相互接続を指定し、feedback を使用して、Azref から Az への閉ループ応答を計算します。
L = series(Autopilot,Aerodyn,1,4); K = ss(eye(4)); T3 = feedback(L,K,[1 2 3 4],[4 3 6 5],+1);
ベクトル [1 2 3 4] および [4 3 6 5] は、それぞれどの入力と出力がフィードバック相互接続を完結させるかを指定します。たとえば、feedback は L の出力 4 と入力 1 を使用して、最初のフィードバック相互接続を作成します。関数は出力 3 と入力 2 を使用して第 2 の相互接続を作成し、さらに同じ作業を進めます。
T3 は 5 入力 7 出力の状態空間モデルです。Azref から Az への閉ループ応答は T3(6,5) です。
Azref から Az へのステップ応答を比較して、3 つの方法が同じ結果を出すことを確認します。
step(T1,T2('Az','Azref'),T3(6,5),2)
