home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 3.ddi / MMLE3.DI$ / ML_DEMO3.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  2.9 KB  |  67 lines

  1. %-------------------------------------------------------------------------
  2. %                         DEMONSTRATION PROGRAM-3
  3. %           FOR  MMLE.M  MAXIMUM LIKELIHOOD IDENTIFICATION FUNCTION
  4. %             UNSTABLE HELICOPTER MODEL - NEEDS PROCESS NOISE ALGO
  5. '-----------------------------------------------------------------------------';
  6. format compact,clc
  7. diary ml_demo3.log
  8.  
  9. disp(ans);
  10. disp('                           MMLE  DEMONSTRATION  No 3')
  11. disp('         CH47 helicopter longitudinal stability and control derivatives.')
  12. disp('                 Two inputs, four outputs. Phugoid mode unstable.')
  13. disp('                      True parameters= [ 1 1 1 1 1 10 10]')
  14. disp('                State noise covariance = diag[0 100 100 0]/1e6')
  15. disp('                   Measurement noise covariance = I * 10^-4')
  16. disp(ans)
  17. %------------------------------------------------------------ SIMULATE DATA
  18.  
  19. %     THE "RESULTS" MATRIX PRODUCED BY MMLE.M USES PREF IF AVAILABLE TO IT
  20. pref=[1 1 1 1 1 10 10]; %      GET TRUE SYSTEM PARAMETERS AND MATRICES
  21. [a,phi,gam,c,d,f,x0,dt]=ml_p2ss3(pref); %
  22.  
  23. ndp=200;t=[0:ndp-1]*dt;
  24. uydata=zeros(ndp,6);%
  25. uydata(15:24,1)=ones(10,1);%                   PITCH PULSE    .1 INCH UNITS
  26. uydata(5:14,2)=ones(10,1);%               COLLECTIVE PULSE    .1 INCH UNITS
  27.  
  28. %  UYDATA(:,3:6)= VEL(FT/S), SINK(FT/S), PITCH_RATE(DEG/s), PITCH_ANGLE(DEG)
  29.  
  30. uydata(:,3:6)=dlsim(phi,gam,c,d,uydata(:,1:2)); % NOISE-FREE RESPONSE
  31.  
  32. %              NOW FILTER STATE NOISE SEPARATELY TO BYPASS gam MATRIX
  33. randn('seed',0);
  34. rootqd=[0 0;pref(6) 0;0 pref(7);0 0]/1000;
  35. statenoise=dlsim(phi,rootqd,c,d,randn(ndp,2));%     STATE NOISE
  36.  
  37. %  OUTPUT IS NOISE-FREE RESPONSE + STATE NOISE + MEASUREMENT NOISE, i.e.,
  38. [m,n]=size(statenoise);
  39. uydata(:,3:6)=uydata(:,3:6) + statenoise + .01*randn(m,n);
  40.  
  41. %----------------------------------------- SUFFICIENT INPUTS TO MMLE FOLLOW
  42. %uydata -- WAS DEFINED ABOVE
  43. pidq=[1]; %     pidq,pidm,pidf MUST BE VALID EVEN IF NOT USED
  44. pidm=[1:5]; %  (STABILITY AND CONTROL DERIVS)
  45. pidf=[1:7]; %   ditto & INCLUDE STATE NOISE
  46.  
  47. p0=0.7*pref; %      SETUP THE P0 VECTOR WITH 30% ERROR
  48.  
  49. opt=[0 1 5 5 .02 .01 .001 1];
  50.  
  51. gg0=eye(4)*1e-4; %             INITIAL GUESS OF INNOVATIONS COV. = MEAS COV
  52. p2snam='ml_p2ss3'; %                              FILENAME OF P2SS FUNCTION
  53. pert=1e-4;
  54. linesearch=1; %       USE LINESEARCH OPTION TO HELP PROC. NOISE CONVERGENCE
  55. %--------------------------------------------------------------------------
  56. %                     SIMULATE RESPONSE FOR p0,  AND PLOT THIS AND THE DATA
  57.  
  58. uydata0=uydata;[a,phi,gam,c,d]=ml_p2ss3(p0);
  59. uydata0(:,3:6)=dlsim(phi,gam,c,d,uydata0(:,1:2)); %         RESPONSE FOR p0
  60.  
  61. plot(t,[uydata uydata0]),clear uydata0
  62. %--------------------------------------------------------------------------
  63. mmle
  64. diary off
  65. %----------------------------------------------------------- end ml_demo3.m
  66.  
  67.