scaledSymmetricSigmaPoints.m
上传用户:hfch80
上传日期:2007-10-25
资源大小:3637k
文件大小:1k
源码类别:

行业发展研究

开发平台:

Matlab

  1. function [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa)
  2. % This function returns the scaled symmetric sigma point distribution.
  3. %
  4. %  [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa)  
  5. %
  6. % Inputs:
  7. %  x       mean
  8. %  P       covariance
  9. %        alpha        scaling parameter 1
  10. %        beta         extra weight on zero'th point
  11. %  kappa       scaling parameter 2 (usually set to default 0)
  12. %
  13. % Outputs:
  14. %        xPts  The sigma points
  15. %        wPts  The weights on the points
  16. %  nPts  The number of points
  17. %
  18. %
  19. %
  20. % (C) 2000      Rudolph van der Merwe  
  21. % (C) 1998-2000 S. J. Julier.
  22. % Number of sigma points and scaling terms
  23. n    = size(x(:),1);
  24. nPts = 2*n+1;            % we're using the symmetric SUT
  25. % Recalculate kappa according to scaling parameters
  26. kappa = alpha^2*(n+kappa)-n;
  27. % Allocate space
  28. wPts=zeros(1,nPts);
  29. xPts=zeros(n,nPts);
  30. % Calculate matrix square root of weighted covariance matrix
  31. Psqrtm=(chol((n+kappa)*P))';  
  32. % Array of the sigma points
  33. xPts=[zeros(size(P,1),1) -Psqrtm Psqrtm];
  34. % Add mean back in
  35. xPts = xPts + repmat(x,1,nPts);  
  36. % Array of the weights for each sigma point
  37. wPts=[kappa 0.5*ones(1,nPts-1) 0]/(n+kappa);
  38. % Now calculate the zero'th covariance term weight
  39. wPts(nPts+1) = wPts(1) + (1-alpha^2) + beta;