数学建模社区-数学中国

标题: 运行平均数---例题 [打印本页]

作者: 森之张卫东    时间: 2015-9-18 20:58
标题: 运行平均数---例题
运行平均数
当我们键入一些变量总想得到他的统计量。MATLAB内建函数meanstd就是进行统计数据运算的。我们对一系列的数利用这两个函数进行运算后,再键入一个新数,重新计算。这时我们就可以利用持久内存(persistent memory提高运算的效率。
算术平均数的定义如下:
其中xi是N样品中的第i个样品。标准差的定义如下:
标准差则体现随机变量取值与其期望值的偏差。标准差的值较大,则表明该随机变量的取值与其期望值的偏差较大,反之,则表明此偏差较小。如果我们能够记录下样本的个数N,样本的和Σxi以及样本的平方和Σx2,我们在任何的时侯就可以通过公式(5.8)和(5.9)计算出它的平均数和标准差。编写一个程序,计算当前输入数据的当前输入数据的平均数和标准差。
答案:
函数必须能够每接受一次输入值并记录下对应的N,Σxi和Σx2,用于计算当前的平均数和标准差。N,Σxi和Σx2必须存储在持久内存中,这样在两次调用之间,它不会消失。最后函数必须有一种机制,把运行的和清零。




题目.JPG (200.18 KB, 下载次数: 233)

题目.JPG


作者: 森之张卫东    时间: 2015-9-18 21:00
  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. % Define variables:

  9. % ave               --Running average
  10. % msg               --Error message
  11. % n                 --Number of data values
  12. % std               --Running standard deviation
  13. % sum_x             --Running sum of data values
  14. % sum_x2            --Running sum of data values squared
  15. % x                 --Input value
  16. % Record of revisions:
  17. % Date      Programmer      Description of change
  18. % ====      ==========      =====================
  19. % 12/16/98  S. J. Chapman   Original code
  20. % Declare persistent values
  21. persistent n            % Number of input values
  22. persistent sum_x        % Running sum of values
  23. persistent sum_x2       % Running sum of values squared
  24. % Check for a legal number of input arguments.
  25. msg = nargchk(1,1,nargin);
  26. error(msg);

  27. % If the argument is 'reset', reset the running sums.
  28. if x == 'reset'
  29.     n = 0;
  30.     sum_x = 0;
  31.     sum_x2 = 0;
  32. else
  33.     n = n + 1;
  34.     sum_x = sum_x + x;
  35.     sum_x2 = sum_x2 + x^2;
  36. end

  37. % Calculate ave and sd
  38. if n == 0
  39.     ave = 0;
  40.     std = 0;
  41. elseif n == 1
  42.     ave = sum_x;
  43.     std = 0;
  44. else
  45.     ave = sum_x / n;
  46.     std = sqrt((n*sum_x2 - sum_x^2) / (n*(n - 1)));
  47. end
复制代码


作者: 森之张卫东    时间: 2015-9-18 21:00
上传附件,具体内容!

运行平均数---例题.doc

48 KB, 下载次数: 0, 下载积分: 体力 -2 点

详细内容






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5