www.gusucode.com > control 案例程序 matlab源码代码 > control/MIMOFeedbackLoopExample.m

    %% MIMO Feedback Loop  
% This example shows how to obtain the closed-loop response of a MIMO feedback
% loop in three different ways. 
%
% In this example, you obtain the response from |Azref| to |Az| of the MIMO
% feedback loop of the following block diagram.  
%%
% 
% <<../interconnections15.png>>
% 
%%
% You can compute the closed-loop response using one of the following three
% approaches: 
%  
% * Name-based interconnection with |connect|  
% * Name-based interconnection with |feedback|  
% * Index-based interconnection with |feedback|   
%
% You can use whichever of these approaches is most convenient for your
% application.   

% Copyright 2015 The MathWorks, Inc.


%% 
% Load the plant |Aerodyn| and the controller |Autopilot| into the
% MATLAB(R)
% workspace. These models are stored in the datafile |MIMOfeedback.mat|.
% 
load(fullfile(matlabroot,'examples','control','MIMOfeedback.mat'))
%%
% |Aerodyn| is a 4-input, 7-output state-space (|ss|) model. |Autopilot|
% is a 5-input, 1-output |ss| model. The inputs and outputs of both models
% names appear as shown in the block diagram.  

%% 
% Compute the closed-loop response from |Azref| to |Az| using |connect|. 
% 
T1 = connect(Autopilot,Aerodyn,'Azref','Az'); 
%%
% The |connect| function combines the models by joining the inputs and outputs
% that have matching names. The last two arguments to |connect| specify
% the input and output signals of the resulting model. Therefore, |T1| is
% a state-space model with input |Azref| and output |Az|.  The |connect|
% function ignores the other inputs and outputs in |Autopilot| and
% |Aerodyn|.
%% 
% Compute the closed-loop response from |Azref| to |Az| using name-based
% interconnection with the |feedback| command. Use the model input and output
% names to specify the interconnections between |Aerodyn| and |Autopilot|. 
%
% When you use the |feedback| function, think of the closed-loop system
% as a feedback interconnection between an open-loop plant-controller combination
% |L| and a diagonal unity-gain feedback element |K|. The following block
% diagram shows this interconnection.  
%%
% 
% <<../interconnections16.png>>
% 
%% 
L = series(Autopilot,Aerodyn,'Fin');
 
FeedbackChannels = {'Alpha','Mach','Az','q'};
K = ss(eye(4),'InputName',FeedbackChannels,...
              'OutputName',FeedbackChannels);

T2 = feedback(L,K,'name',+1); 
%%
% The closed-loop model |T2| represents the positive feedback interconnection
% of |L| and |K|. The |'name'| option causes |feedback| to connect |L| and
% |K| by matching their input and output names. 
%
% |T2| is a 5-input, 7-output state-space model. The closed-loop response
% from |Azref| to |Az| is |T2('Az','Azref')|.  

%% 
% Compute the closed-loop response from |Azref| to |Az| using |feedback|,
% using indices to specify the interconnections between |Aerodyn| and |Autopilot|. 
% 
L = series(Autopilot,Aerodyn,1,4);
K = ss(eye(4));
T3 = feedback(L,K,[1 2 3 4],[4 3 6 5],+1); 
%%
% The vectors |[1 2 3 4]| and |[4 3 6 5]| specify which inputs and outputs,
% respectively, complete the feedback interconnection. For example, |feedback|
% uses output 4 and input 1 of |L| to create the first feedback interconnection.
% The function uses output 3 and input 2 to create the second interconnection,
% and so on. 
%
% |T3| is a 5-input, 7-output state-space model. The closed-loop response
% from |Azref| to |Az| is |T3(6,5)|.  

%% 
% Compare the step response from |Azref| to |Az| to confirm that the three
% approaches yield the same results. 
% 
step(T1,T2('Az','Azref'),T3(6,5),2)