www.gusucode.com > control 案例程序 matlab源码代码 > control/EliminateStatesbyPoleZeroCancellationExample.m
%% Pole-Zero Cancelation at the Command Line % To reduce the order of a model by pole-zero cancelation at the command % line, use |minreal|. % %% % Create a model of the following system, where |C| is a PI controller, and % |G| has a zero at $3 \times 10^{-8}$ 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. %% % % <<../transformation21.png>> % G = zpk(3e-8,[-1,-3],1); C = pid(1,0.3); T = feedback(G*C,1) %% % In the closed-loop model |T|, the integrator $(1/s)$ from |C| very nearly % cancels the low-frequency zero of |G|. %% % Force a cancelation of the integrator with the zero near the origin. Tred = minreal(T,1e-7) %% % 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 $10^{-7}$ 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 not match exactly, 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.