//--------------------------------------------------------------------------- // // Example of the design of first order nonlinear filters for the // approximation of the norm of the output signal of a linear second // order SISO filter through Lyapunov synthesis. // // Developed for Scilab 2.6. // // Rio de Janeiro, May 15, 2002. // // Author: Jose' Paulo V. S. da Cunha // //--------------------------------------------------------------------------- // Filter in this example: G1(s) = 10/[(s+1)(s+2)]. // First case: cascade realization. A=[-1 1 ; 0 -2 ] B=[0; 1] C = [10 0] G1=syslin('c',A,B,C); // Impulse response: t=0:0.05:5; G1_impulse = abs(csim('impulse',t,G1)); G1_impulse(1) = abs(C*B); // Lyapunov synthesis: [cascade_c1,cascade_c2,cascade_Gamma]=first_order_lyapunov_filter(A,B,C) cascade_DC_gain = cascade_c1/cascade_Gamma cascade_impulse = csim('impulse',t,syslin('c',-cascade_Gamma,1,cascade_c1)); cascade_impulse(1) = cascade_c1; // Second case: controllable realization. A=[ 0 1 ; -2 -3 ] B=[0; 1] C = [10 0] // Lyapunov synthesis: [controllable_c1,controllable_c2,controllable_Gamma]=first_order_lyapunov_filter(A,B,C) controllable_DC_gain = controllable_c1/controllable_Gamma controllable_impulse = csim('impulse',t,syslin('c',-controllable_Gamma,1,controllable_c1)); controllable_impulse(1) = controllable_c1; // Third case: parallel realization. A=[ -1 0 ; 0 -2 ] B=[1; 1] C = [10 -10] // Lyapunov synthesis: [parallel_c1,parallel_c2,parallel_Gamma]=first_order_lyapunov_filter(A,B,C) parallel_DC_gain = parallel_c1/parallel_Gamma parallel_impulse = csim('impulse',t,syslin('c',-parallel_Gamma,1,parallel_c1)); parallel_impulse(1) = parallel_c1; // Ploting impulse responses: xbasc(); xset("default"); xset("font size",4); xset("line style",1); plot2d(t',[G1_impulse' cascade_impulse' controllable_impulse' parallel_impulse']); xtitle('','time (s)','Impulse response norm');