%% Design Controller Using Identified Model with Noise Channel
% This example shows how to design a model predictive controller using an identified plant model with a nontrivial noise component.
% This example requires a System Identification Toolbox™ license.
% Load the input/output data for identification.

load dryer2
Ts = 0.08;

%
% Create an iddata object from the input

dry_data = iddata(y2,u2,Ts);
dry_data_detrended = detrend(dry_data);

%
% Estimate a linear state-space plant model.

plant_idss = ssest(dry_data_detrended,3);

% plant_idss is a third-order, identified state-space model that contains one measured input and one unmeasured noise component.
%
% Design a model predictive controller for the identified plant model.

controller = mpc(plant_idss,Ts);

% controller is an mpc object in which:
% The measured input of plant_idss is a manipulated variable.
% The noise component of plant_idss is an unmeasured disturbance.
% The output of plant_idss is a measured output.
% To view the structure of the model predictive controller, at the MATLAB® command prompt, type controller.
% You can change the treatment of plant input signals in one of two ways:
% Programmatic - Use the setmpcsignals command to set the signal types.
% MPC Designer - Specify the signal types when defining the MPC structure using an imported plant.
%
% You can also design a model predictive controller using:

plant_ss = ss(plant_idss,'augmented');
controller2 = mpc(plant_ss,Ts);

% When you use the 'augmented' input argument, ss creates two input groups, Measured and Noise, for the measured and noise inputs of plant_idss. mpc handles the measured and noise components of plant_ss and plant_idss identically.
% Copyright 2015 The MathWorks, Inc.