ADDED   mttroot/mtt/lib/control/PPP/ppp_pred.m
Index: mttroot/mtt/lib/control/PPP/ppp_pred.m
==================================================================
--- /dev/null
+++ mttroot/mtt/lib/control/PPP/ppp_pred.m
@@ -0,0 +1,31 @@
+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