function [A_p,B_p] = ppp_pred (A,B,C,D,A_u,Ust0,T) ## usage: [A_p,B_p] = ppp_pred (A,B,C,D,A_u,Ust0,T) ## ## PPP prediction matrices: x_pred = A_p*x + B_p*U ## Sanity [n_x,n_u,n_y] = abcddim(A,B,C,D); # System dimensions if (n_x==-1) error("A B C D not compatible"); endif n_U = issquare(A_u); if (n_U!=n_x) error(sprintf("A_u must be %ix%i",n_x,n_x)); endif [nn,mm] = size(Ust0); if (nn!=1)||(mm!=n_x) error(sprintf("Ust0 must be 1x%i",n_x)); endif Z = zeros(n_x,n_x); AA = [A B*Ust0 Z A_u']; eAA = expm(AA*T); A_p = eAA(1:n_x,1:n_x); B_p = eAA(1:n_x,n_x+1:2*n_x); endfunction