projsl - linear system projection
slp= projected model of sl where Q*M is the full rank factorization of the projection.
If (A,B,C,D) is the representation of sl, the projected model is given by (M*A*Q,M*B,C*Q,D).
Usually, the projection Q*M is obtained as the spectral projection of an appropriate auxiliary matrix W e.g. W = product of (weighted) gramians or product of Riccati equations.
rand('seed',0);sl=ssrand(2,2,5);[A,B,C,D]=abcd(sl);poles=spec(A) [Q,M]=pbig(A,0,'c'); //keeping unstable poles slred=projsl(sl,Q,M);spec(slred('A')) sl('D')=rand(2,2); //making proper system trzeros(sl) //zeros of sl wi=inv(sl); //wi=inverse in state-space [q,m]=psmall(wi('A'),2,'d'); //keeping small zeros (poles of wi) i.e. abs(z)<2 slred2=projsl(sl,q,m); trzeros(slred2) //zeros of slred2 = small zeros of sl // Example keeping second order modes A=diag([-1,-2,-3]); sl=syslin('c',A,rand(3,2),rand(2,3));[nk2,W]=hankelsv(sl) [Q,M]=pbig(W,nk2(2)-%eps,'c'); //keeping 2 eigenvalues of W slr=projsl(sl,Q,M); //reduced model hankelsv(slr)