Documentation Center

  • Trial Software
  • Product Updates


Region-based modal decomposition


[H,H0] = modsep(G,N,REGIONFCN)


[H,H0] = modsep(G,N,REGIONFCN) decomposes the LTI model G into a sum of n simpler models Hj with their poles in disjoint regions Rj of the complex plane:

G can be any LTI model created with ss, tf, or zpk, and N is the number of regions used in the decomposition. modsep packs the submodels Hj into an LTI array H and returns the static gain H0 separately. Use H(:,:,j) to retrieve the submodel Hj(s).

To specify the regions of interest, use a function of the form


that assigns a region index IR between 1 and N to a given pole p. You can specify this function as a string or a function handle, and use the syntax MODSEP(G,N,REGIONFCN,PARAM1,...) to pass extra input arguments:



To decompose G into G(z) = H0 + H1(z) + H2(z) where H1 and H2 have their poles inside and outside the unit disk respectively, use

[H,H0]  = modsep(G,2,@udsep)

where the function udsep is defined by

function r = udsep(p)
if abs(p)<1, r = 1;  % assign r=1 to poles inside unit disk
else         r = 2;  % assign r=2 to poles outside unit disk

To extract H1(z) and H2(z) from the LTI array H, use

H1 = H(:,:,1);  H2 = H(:,:,2);

See Also

Was this topic helpful?