www.gusucode.com > control 案例程序 matlab源码代码 > control/SpectralFactorizationOfSystemExample.m
%% Spectral Factorization of System % Consider the following system. %% G0 = ss(zpk([-1 -5 1+2i 1-2i],[-100 1+2i 1-2i -10],1e3)); H = G0'*G0; %% % |G0| has a mix of stable and unstable dynamics. |H| is a self-conjugate % system whose dynamics consist of the poles and zeros of |G0| and their % reflections across the imaginary axis. Use spectral factorization to % separate the stable poles and zeros into |G| and the unstable % poles and zeros into |G'|. [G,S] = spectralfact(H); %% % Confirm that |G| is stable and minimum phase, by checking that % all its poles and zeros fall in the left half-plane (|Re(s)| < 0). p = pole(G) z = zero(G) %% % |G| also has unit feedthrough. G.D %% % Because |H| is SISO, |S| is a scalar. If |H| were MIMO, the dimensions of % |S| would match the I/O dimensions of |H|. S %% % Confirm that |G| and |S| satisfy |H = G'*S*G| by comparing the original % system to the difference between the original and factored systems. |sigmaplot| % throws a warning because the difference is very small. Hf = G'*S*G; sigmaplot(H,H-Hf)