www.pudn.com > matlab±à³Ì.zip > runstats.m, change:1999-03-10,size:1478b
function [ave, std] = runstats(x) %RUNSTATS Generate running ave / std deviation % Function RUNSTATS generates a running average % and standard deviation of a data set. The % values x must be passed to this function one % at a time. A call to RUNSTATS with the argument % 'reset' will reset tue running sums. % Define variables: % ave -- Running average % msg -- Error message % n -- Number of data values % std -- Running standard deviation % sum_x -- Running sum of data values % sum_x2 -- Running sum of data values squared % x -- Input value % Record of revisions: % Date Programmer Description of change % ==== ========== ===================== % 12/16/98 S. J. Chapman Original code % Declare persistent values persistent n % Number of input values persistent sum_x % Running sum of values persistent sum_x2 % Running sum of values squared % Check for a legal number of input arguments. msg = nargchk(1,1,nargin); error(msg); % If the argument is 'reset', reset the running sums. if x == 'reset' n = 0; sum_x = 0; sum_x2 = 0; else n = n + 1; sum_x = sum_x + x; sum_x2 = sum_x2 + x^2; end % Calculate ave and sd if n == 0 ave = 0; std = 0; elseif n == 1 ave = sum_x; std = 0; else ave = sum_x / n; std = sqrt((n*sum_x2 - sum_x^2) / (n*(n-1))); end