www.pudn.com > upf_demos.rar > scaledSymmetricSigmaPoints.m
function [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa) % This function returns the scaled symmetric sigma point distribution. % % [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa) % % Inputs: % x mean % P covariance % alpha scaling parameter 1 % beta extra weight on zero'th point % kappa scaling parameter 2 (usually set to default 0) % % Outputs: % xPts The sigma points % wPts The weights on the points % nPts The number of points % % % % (C) 2000 Rudolph van der Merwe % (C) 1998-2000 S. J. Julier. % Number of sigma points and scaling terms n = size(x(:),1); nPts = 2*n+1; % we're using the symmetric SUT % Recalculate kappa according to scaling parameters kappa = alpha^2*(n+kappa)-n; % Allocate space wPts=zeros(1,nPts); xPts=zeros(n,nPts); % Calculate matrix square root of weighted covariance matrix Psqrtm=(chol((n+kappa)*P))'; % Array of the sigma points xPts=[zeros(size(P,1),1) -Psqrtm Psqrtm]; % Add mean back in xPts = xPts + repmat(x,1,nPts); % Array of the weights for each sigma point wPts=[kappa 0.5*ones(1,nPts-1) 0]/(n+kappa); % Now calculate the zero'th covariance term weight wPts(nPts+1) = wPts(1) + (1-alpha^2) + beta;