runstats.m
上传用户:zjhyt3
上传日期:2007-07-03
资源大小:89k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. function [ave, std] = runstats(x)
  2. %RUNSTATS Generate running ave / std deviation
  3. % Function RUNSTATS generates a running average 
  4. % and standard deviation of a data set.  The
  5. % values x must be passed to this function one
  6. % at a time.  A call to RUNSTATS with the argument
  7. % 'reset' will reset tue running sums.
  8.  
  9. % Define variables:
  10. %   ave      -- Running average
  11. %   msg      -- Error message
  12. %   n        -- Number of data values
  13. %   std      -- Running standard deviation
  14. %   sum_x    -- Running sum of data values
  15. %   sum_x2   -- Running sum of data values squared
  16. %   x        -- Input value
  17. %  Record of revisions:
  18. %      Date       Programmer          Description of change
  19. %      ====       ==========          =====================
  20. %    12/16/98    S. J. Chapman        Original code
  21. % Declare persistent values
  22. persistent n            % Number of input values
  23. persistent sum_x        % Running sum of values
  24. persistent sum_x2       % Running sum of values squared
  25. % Check for a legal number of input arguments.
  26. msg = nargchk(1,1,nargin);
  27. error(msg);
  28. % If the argument is 'reset', reset the running sums.
  29. if x == 'reset'
  30.    n = 0;
  31.    sum_x = 0;
  32.    sum_x2 = 0;
  33. else
  34.    n = n + 1;
  35.    sum_x = sum_x + x;
  36.    sum_x2 = sum_x2 + x^2;
  37. end
  38. % Calculate ave and sd
  39. if n == 0
  40.    ave = 0;
  41.    std = 0;
  42. elseif n == 1
  43.    ave = sum_x;
  44.    std = 0;
  45. else
  46.    ave = sum_x / n; 
  47.    std = sqrt((n*sum_x2 - sum_x^2) / (n*(n-1)));
  48. end