www.gusucode.com > mpc 案例源码 matlab代码程序 > mpc/DesignStateEstimatorByPolePlacementExample.m
%% Design State Estimator by Pole Placement % Design an estimator using pole placement, assuming the % linear system $AM=L$ is solvable. %% % Create a plant model. % Copyright 2015 The MathWorks, Inc. G = tf({1,1,1},{[1 .5 1],[1 1],[.7 .5 1]}); %% % To improve the clarity of this example, call |mpcverbosity| to suppress % messages related to working with an MPC controller. old_status = mpcverbosity('off'); %% % Create a model predictive controller for the plant. Specify the % controller sample time as 0.2 seconds. MPCobj = mpc(G, 0.2); %% % Obtain the default state estimator gain. [~,M,A1,Cm1] = getEstimator(MPCobj); %% % Calculate the default observer poles. e = eig(A1-A1*M*Cm1); abs(e) %% % Specify faster observer poles. new_poles = [.8 .75 .7 .85 .6 .81]; %% % Compute a state-gain matrix that places the observer poles at |new_poles|. L = place(A1',Cm1',new_poles)'; %% % |place| returns the controller-gain matrix, whereas you want to compute % the observer-gain matrix. Using the principle of duality, which relates % controllability to observability, you specify the transpose of |A1| and % |Cm1| as the inputs to |place|. This function call yields the observer % gain transpose. %% % Obtain the estimator gain from the state-gain matrix. M = A1\L; %% % Specify |M| as the estimator for |MPCobj|. setEstimator(MPCobj,L,M) %% % The pair, ($A_1,C_{m1}$), describing the overall state-space realization of % the combination of plant and disturbance models must be observable for % the state estimation design to succeed. Observability is checked in Model % Predictive Control Toolbox software at two levels: (1) observability of % the plant model is checked _at construction_ of the MPC object, provided % that the model of the plant is given in state-space form; (2) % observability of the overall extended model is checked _at % initialization_ of the MPC object, after all models have been converted % to discrete-time, delay-free, state-space form and combined together. %% % Restore |mpcverbosity|. mpcverbosity(old_status);