start_callback.m
上传用户:jspk663
上传日期:2013-08-19
资源大小:232k
文件大小:2k
源码类别:

matlab例程

开发平台:

Matlab

  1. function start_callback
  2. try 
  3.     load inidata;
  4. catch
  5.     msgbox('The filter has not been initialized!','Warning','warn','modal');
  6.     return
  7. end
  8. delete(gca);
  9. setaxis;
  10. Pk_1=P0;
  11. Xk_1=X0;
  12. k=1;
  13. order=length(A);
  14. BII=findobj(gcf,'tag','start');
  15. mp=get(BII,'userdata');
  16. set(BII,'userdata',mp+.0001);%to end last 'start circle'
  17. mp=get(BII,'userdata');
  18. BIII=findobj(gcf,'tag','stop');
  19. set(BIII,'userdata',1,'String','Stop?');
  20. M=findobj(gcf,'tag','time');
  21. t=get(M,'userdata');
  22. CI=findobj(gcf,'tag','compo1');
  23. if isempty(get(CI,'userdata'))
  24.   set(CI,'userdata',1:order);
  25. end
  26. co=get(CI,'userdata');%co decides the output components
  27. CII=findobj(gcf,'tag','p');
  28. cii=get(CII,'userdata');
  29. if cii==1
  30.     si=1;
  31. else
  32.     si=2;%si decides whether to output error or state
  33. end
  34. L=findobj(gcf,'tag','legendh');
  35. set(L,'userdata',0);
  36. load fZk;% load mesurements
  37. %%%%%%%%%%%%%%%%%%
  38. % Filtering Loop %
  39. %%%%%%%%%%%%%%%%%%
  40. try
  41.     while k<=t(2) 
  42.     if get(BII,'userdata')~=mp%to end last 'start circle'
  43.         break;
  44.     end
  45.        Phik_=A;           
  46.        Zk=Zkk{k};%Zkk is from fZk
  47.        Gamak_=B;
  48.        Hk=H;
  49.        Qk_1=Q;
  50.        Rk=R;
  51.               
  52.        Pk_=Phik_*Pk_1*Phik_'+Gamak_*Qk_1*Gamak_';
  53.        Kk=Pk_*Hk'*(Hk*Pk_*Hk'+Rk)^(-1);
  54.        I=eye(length(Pk_));
  55.        Pkk=(I-Kk*Hk)*Pk_*(I-Kk*Hk)'+Kk*Rk*Kk';
  56.     
  57.        Xk_=Phik_*Xk_1;
  58.        Xk=Xk_+Kk*(Zk-Hk*Xk_);
  59.        
  60.        drawing(Pk_1,Pkk,Xk_1,Xk,k,co,si);    
  61.              
  62.        Pk_1=Pkk;   
  63.        Xk_1=Xk;
  64.        k=k+1;
  65.    end
  66. catch
  67.     return
  68. end