stdmean.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. function Y=stdmean(X,A)
  2. %STDMEAN Weighted average based on error from the mean
  3. % stdmean(X,A)
  4. % This calculates a weighted mean based on how clusted the
  5. % data is. Each value is weighted inversely by the number
  6. % of standard deviations it is to the mean (Z).
  7. % A is the power to weight the Z by, for example:
  8. % if A = -1, then the values are weighted by Z^-1.
  9. % if A = -2, then the values are weighted by Z^-2.
  10. % A can be a fractional number.
  11. % Note : A is an optional parameter with default of -2
  12. %
  13. % For vectors, STDMEAN(X)  is the mean value of the elements in X.
  14. %  For matrices, STDMEAN(X) is a row vector containing the mean value
  15. %  of each column.
  16. %
  17. % Early tested have shown that using the stdmean does not
  18. % improve the performance, or reduce phase error .
  19. if nargin < 2,
  20. A = -2;
  21. end
  22. if size(X,1) == 1,
  23. Z = (X - mean(X))./std(X); %Find number of std each point
  24. %is away from mean.
  25. W = abs((Z+0.01).^(A)); %Calc the weighting factor of each point
  26. Y = sum(X.*W)./sum(W);
  27. else
  28. for k = 1:size(X,2),
  29. Z(:,k) = (X(:,k) - mean(X(:,k)))./std(X(:,k));
  30. %Find number of std each point
  31. %is away from mean.
  32. W(:,k) = abs((Z(:,k)+0.01).^(A));
  33. %Calc the weighting factor of each point
  34. Y(:,k) = sum((X(:,k).*W(:,k)))./sum(W(:,k));
  35. end
  36. end