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

    %% Robust Stability and Worst-Case Gain of Uncertain System
% This example shows how to calculate the robust stability and examine the
% worst-case gain of the closed-loop system described in
% <docid:robust_gs.f3-11915>. The following commands construct that system.
%%
m1 = ureal('m1',1,'percent',20);
m2 = ureal('m2',1,'percent',20);
k  = ureal('k',1,'percent',20);

s = zpk('s'); 
G1 = ss(1/s^2)/m1; 
G2 = ss(1/s^2)/m2; 


F = [0;G1]*[1 -1]+[1;-1]*[0,G2];
P = lft(F,k); 

C = 100*ss((s+1)/(.001*s+1))^3;

T = feedback(P*C,1); % Closed-loop uncertain system
%% 
% This uncertain state-space model |T| has three uncertain
% parameters, |k|, |m1|, and |m2|,
% each equal to 1&#xb1;20% uncertain variation. Use |robstab| to analyze whether the
% closed-loop system |T| is robustly stable for all
% combinations of possible values of these three parameters.
[stabmarg,wcus] = robstab(T);
stabmarg
%%
% The data in the structure |stabmarg| includes bounds on the stability
% margin, which indicate that the control system can tolerate almost 3
% times the specified uncertainty before going unstable. It is stable for all
% parameter variations in the specified &#xb1;20% range. The critical
% frequency is the frequency at which the system is closest to instability.
%% 
% The structure |wcus| contains the smallest destabilization perturbation
% values for each uncertain element. 
wcus
%% 
% You can use these values with |usubs|
% to verify that they do indeed result in an unstable system.
% 
Tunst = usubs(T,wcus);   
isstable(Tunst)
%% 
% Use |wcgain| to calculate the worst-case peak gain, the highest peak gain
% occurring within the specified uncertainty ranges.
[wcg,wcug] = wcgain(T);
wcg
%%
% |wcug| contains the values of the uncertain elements that cause the
% worst-case gain. Compute a closed-loop model with these values, and plot
% its frequency response along with some random samples of the uncertain
% system.
Twc = usubs(T,wcug); 
Trand = usample(T,5); 
bodemag(Twc,'b--',Trand,'c:',{.1,100});
legend('Twc - worst-case','Trand - random samples','Location','SouthWest');
%%
% Alternatively use |wcsigma| to visualize the highest possible gain at
% each frequency, the system with the highest peak gain, and random samples
% of the uncertain system.
wcsigma(T,{.1,100})