Skip to main content
. 2021 Jul 15;21(14):4823. doi: 10.3390/s21144823
Algorithm 1. The specific steps of SVD-ADCKF.
      Input:Xk, Pk, Qk
      Output:Xk+1, Pk+1, Qk+1
      Nonlinear time update
      1. Initialize state estimation Xk and covariance estimation Pk;
      2. Perform SVD decomposition on Pk to obtain Sk;
      3. Calculate the cubature point Xkj according to the equation: Xkj=Xk+SkIjn,j=1,…,nXkj=Xk−SkIjn,j=n+1,…,2n;
      4. Calculate the one-step prediction of each cubature point (Xk+1|kj) based on the state equation and
   the process noise covariance (Qk);
      5. Combine each cubature point to obtain the linear approximation time update Xk+1|k:
Xk+1|k=∑j=12nωjXk+1|kj
quad where n is system order; ωj is the weight of each cubature point;
      6. Calculate the time update of the linearly approximated error covariance Pk+1|k:
Pk+1|k=∑j=12nωj(Xk+1|k−Xk+1|k)(Xk+1|k−Xk+1|k)T;
      Linear measurement update
      7. Obtain the linear prediction value of the measurement (Zk+1|k) based on the time update of
   the measurement equation to the linear approximation;
      8. Calculate Kalman gain K based on the formula: K=Pk+1|kHT(HPk+1|kHT+Rk)−1;
      9. Update the system state based on the Kalman gain: Xk+1=Xk+1|k+K(Zk+1−Zk+1|k);
      10. Update the system error covariance based on the Kalman gain: Pk+1=Pk+1|k−KHPk+1|k;
      Process noise covariance update
      11. Calculate the residual error: ek+1=Xk+1−Xk+1|k;
      12. Calculate the correction matrix: Qk+1*=ek+1ek+1T+Pk+1|k−Pk+1−Qk;
      13. Calculate the window width M based on Formulas (10) and (11);
      14. Correct the process noise covariance: Qk+1=Qk+(Qk+1*−Qk)M;
      15. Output Xk+1, Pk+1, Qk+1 as the initial value for the next moment, and repeat Steps 1–14.
      End.