function [name,T,y,u,ye,ue,J] = ppp_ex15 (ReturnName) ## usage: ppp_ex15 () ## ## PPP example - an unstable, nmp siso system ## $Id$ ## Example name name = "Linear unstable non-minimum phase third order system - intermittent control"; if nargin>0 return endif ## System - unstable A = [3 -3 1 1 0 0 0 1 0]; B = [10 0 0]; C = [0 -0.5 1]; D = 0; [n_x,n_u,n_y] = abcddim(A,B,C,D); ## Setpoint A_w = ppp_aug(0,[]); ## Controller t =[4.0:0.01:5.0]; # Optimisation horizon dt = t(2)-t(1); A_u = ppp_aug(laguerre_matrix(3,2.0), A_w); Q = 1; # Weight ##Simulate W = 1; # Setpoint x_0 = zeros(n_x,1); # Initial state ## Closed-loop intermittent solution Delta_ol = 0.5 # Intermittent time disp("Intermittent control simulation"); [T,y,u] = ppp_qp_sim (A,B,C,D,A_u,A_w,t,Q, \ [],[],[],[], \ [],[],[],[],W,x_0,Delta_ol); size(T) ## Exact closed-loop disp("Exact closed-loop"); [k_x,k_w] = ppp_lin (A,B,C,D,A_u,A_w,t,Q) [ye,Xe] = ppp_sm2sr(A-B*k_x, B, C, D, T, k_w*W, x_0); # Compute Closed-loop control ue = k_w*ones(size(T))*W - k_x*Xe; title("y and u, exact and intermittent"); xlabel("t"); grid; plot(T,y,"1;y (intermittent);", T,u,"2;u (intermittent);",\ T,ye,"3;y (exact);", T,ue,"4;u (exact);"); endfunction