www.gusucode.com > robust 案例源码程序 matlab代码 > robust/FitUncertainModelToArrayOfLTIResponsesExample.m
%% Fit Uncertain Model to Array of LTI Responses % Fit an uncertain model to an array of LTI responses. The responses might % be, for example, the results of multiple runs of acquisition of frequency % response data from a physical system. %% % For the purpose of this example, generate the frequency response data by % creating an array of LTI models and sampling the frequency response of % those models. % Copyright 2015 The MathWorks, Inc. Pnom = tf(2,[1 -2]); p1 = Pnom*tf(1,[.06 1]); p2 = Pnom*tf([-.02 1],[.02 1]); p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]); array = stack(1,p1,p2,p3); Parray = frd(array,logspace(-1,3,60)); %% % The frequency response data in |Parray| represents three separate data % acquisition experiments on the system. % % Plot relative errors between the nominal plant response and the three % models in the LTI array. relerr = (Pnom-Parray)/Pnom; bodemag(relerr) %% % If you use a % multiplicative uncertainty model structure, the magnitude of the shaping % filter should fit the maximum relative errors at each frequency. % % Try a 1st-order shaping filter to fit the maximum relative errors. [P,Info] = ucover(Parray,Pnom,1); %% % Plot the response to see how well the shaping filter fits the % relative errors. bodemag(relerr,'b--',Info.W1,'r',{0.1,1000}); %% % The plot shows that the filter |W1| is too conservative and exceeds the % maximum relative error at most frequencies. To obtain a tighter fit, % rerun the function using a 4th-order filter. [P,Info] = ucover(Parray,Pnom,4); %% % Evaluate the fit by plotting the Bode magnitude plot. bodemag(relerr,'b--',Info.W1,'r',{0.1,1000}); %% % This plot shows that for the 4th-order filter, the magnitude of |W1| % closely matches the minimum uncertainty amount.