Documentation |
This example shows how to use to reduce the order of a transfer function with cancelling or near-cancelling factors in the numerator and denominator using minreal.
Canceling or near-canceling pole-zero pairs can arise from system dynamics, or from building models using model interconnection functions.
Create a model of the following system, where C is a PI controller and G has a zero at rad/s. Such a low-frequency zero can arise from derivative action somewhere in the plant dynamics. For example, the plant may include a component that computes speed from position measurements.
G = zpk(3e-8,[-1,-3],1); C = pid(1,0.3); T = feedback(G*C,1)
T = (s+0.3) (s-3e-08) ---------------------- s (s+4.218) (s+0.7824) Continuous-time zero/pole/gain model.
In the closed-loop model T, the integrator from C very nearly cancels the low-frequency zero of G.
Force a cancellation of the integrator with the zero near the origin.
Tred = minreal(T,1e-7)
Tred = (s+0.3) -------------------- (s+4.218) (s+0.7824) Continuous-time zero/pole/gain model.
By default, minreal reduces transfer function order by canceling exact pole-zero pairs or near pole-zero pairs within sqrt(eps). Specifying 1e-7 as the second input causes minreal to eliminate pole-zero pairs within rad/s of each other.
The reduced model Tred includes all the dynamics of the original closed-loop model T, except for the near-canceling zero-pole pair.
Compare the frequency responses of the original and reduced systems.
bode(T,Tred,'r--') legend('T','Tred')
Because the canceled pole and zero do exactly match, some extreme low-frequency dynamics evident in the original model are missing from Tred. In many applications, you can neglect such extreme low-frequency dynamics. When you increase the matching tolerance of minreal, make sure that you do not eliminate dynamic features that are relevant to your application.