www.gusucode.com > robust 案例源码程序 matlab代码 > robust/ApproximatePlantModelByAdditiveErrorMethodsExample.m

    %% Approximate Plant Model by Additive Error Methods
% Given a system |G| in LTI form, the following commands reduce the system to
% any desired order you specify. The judgment call is based on its Hankel
% singular values.
%%

% Copyright 2015 The MathWorks, Inc.

rng(1234,'twister');
G = rss(30,4,3); % random 30-state model
% balanced truncation to models with sizes 12:16
[G1,info1] = balancmr(G,12:16); 
% Schur balanced truncation by specifying `MaxError'
[G2,info2] = schurmr(G,'MaxError',[1,0.8,0.5,0.2]);
sigma(G,'b-',G1,'r--',G2,'g-.')
legend('G','G1','G2')
%%
% The plot compares the original model |G| with the reduced models |G1| and
% |G2|.
%%
% To determine whether the theoretical error bound is satisfied, calculate
% the peak difference across frequencies between the gain of the original
% system and the reduced system.  Compare that to the error bound stored in
% the |info| structure.
norm(G-G1(:,:,1),'inf') 
info1.ErrorBound(1) 
%%
% Or, plot the model error vs. error bound via the following commands:
[sv,w] = sigma(G-G1(:,:,1));
loglog(w,sv,w,info1.ErrorBound(1)*ones(size(w)))
xlabel('rad/sec');ylabel('SV');
title('Error Bound and Model Error')