数学知识:
标准差体现随机变量取值与其期望值的偏差。标准差的值较大,则表明该随机变量的取值与其期望值的偏差较大
反之,则表明此偏差较小。
函数功能:
函数必须能够接受一次输入值并记录对应的已输入数N、sum(xi)、sum(xi^2),用于计算当前的平均值和标准差。
已输入数N、sum(xi)、sum(xi^2)必须存储在持久内存中,这样在每一次调用后,不会消失,最后函数须具备需要时把这些值清零的功能。

1. State the problem
编写一个程序,计算当前输入数据的平均数和标准差。函数必须具备需要时计算功能和清零功能

2. Define the inputs and outputs
输入变量:当输入字符型“reset”用于已输入数N、sum(xi)、sum(xi^2)的清零

3.Design the algorithm(伪代码)
这个函数分为4步:
1)check for a legal number of arguments
2)check for a 'reset',and resets sums if preset,otherwise,add current value to running sums
3)calculate and return runing average and std dev if enough data is available
return zeros if not enough data
4)这些步骤的伪代码:
检查输入的每个数的合法性
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

%计算平均值ave和方差std
if n == 0
ave <- 0
std <- 0
else if n==1
ave <-sum_x
std <- 0
else
ave <-sum_x/n
std <-sqrt((n*sum_x2 - sum_x^2)
end
4.Turn the algorithm into MATLAB statements

自定义函数:runstats.m

function [ave, std] = runstats(x)
%RUNSTATS 随时计算一组数的平均值和方差
% 输入数x必须一次一个,当输入字符串'reset'时,持久变量清零 % 定义输入输出变量
% ave --平均值
% msg --错误信息
% n --一组数的个数
% std --方差
% sum_x --一组数的的和
% sum_x2 --一组数的平方和
% x --输入值
% 版本记录:
% 日期 负责人 版本描述
% ==== ========== =====================
% -- :: 王茂春 源代码 % 持久变量声明(重要)
persistent n % 输入数的个数
persistent sum_x % 输入数的和
persistent sum_x2 % 输入数的平方和 % 检查输入数的合法性
msg = nargchk(1,1,nargin); %最少1个参数,最多一个参数,检查输入变量
error(msg);
% 如果输入时'reset',重置
if x == 'reset'
n = ;
sum_x = ;
sum_x2 = ;
else
n = n + ;
sum_x = sum_x + x;
sum_x2 = sum_x2 + x^;
end
% 计算平均值和方差
if n == %0输入
ave = ;
std = ;
elseif n == %1输入
ave = sum_x;
std = ;
else
ave = sum_x / n;
std = sqrt((n*sum_x2 - sum_x^) / (n*(n - )));
end

调用函数test_runstats.m:

% 脚本文件: test_runstats.m
%
% 程序目的:
% 计算输入一系列数的平均值和方差,(是随时保存值的)
%
% 版本记录:
% 日期 负责人 版本描述
% ==== ========== =====================
% -- :: 王茂春 源代码
%
% 定义变量:
% array --输入数组
% ave --平均值
% ii --循环索引
% nvals --输入数的数量
% std --方差
% 首先清零初始化
[ave std] = runstats('reset');
% 确定输入数的数量
nvals = input('输入这一组总数: ');
% 获取输入值
for ii = :nvals
% 提示输入(这种方法:分成两个语句的学习下。。。)
string = ['输入数值 ' int2str(ii) ': '];
x = input(string); % 调用函数求解(输出变量是多个)
[ave std] = runstats(x);
% 显示运算结果
fprintf('平均值 = %8.4f; 标准差 = %8.4f\n',ave, std);
end

最新文章

  1. ubuntu下安装加装DNS
  2. Hbuilder与svn快速连接并在手机上测试页面
  3. Web APi之安装配置实现Cors跨域
  4. 一个用php实现的获取URL信息的类
  5. Navi.Soft30.产品.格式化.操作手册
  6. wp8 入门到精通 线程
  7. Kolmogorov复杂性
  8. OpenStack开启sshd
  9. Linux中最受欢迎的邮件传输代理(MTA)
  10. little kernel中如何决定app目录下应该包含哪个app
  11. 【Python 01】Python可以做什么
  12. ajax补充--------FormData等...
  13. ipcam
  14. Python 索引迭代
  15. CI框架 -- 创建类库
  16. MiniUi-----Spinner 数值调节器(可以实现任意值的递增)
  17. react 共享数据流
  18. POJ 2007 Scrambled Polygon 极角序 水
  19. GOF23设计模式之适配器模式(Adapter)
  20. 4.30-5.1cf补题

热门文章

  1. JQuery实现超链接鼠标提示效果
  2. css 弹出框
  3. Android之布局大全
  4. 分布式事务 &amp; 两阶段提交 &amp; 三阶段提交
  5. 设置ubuntu下使用ls命令显示文件颜色显示
  6. oracle系列--基础理论
  7. SQL SERVER 2000 数据恢复(分离数据库+附加数据库)
  8. SVN和Git的一些用法总结
  9. ASP.NET MVC TempData使用心得
  10. Unity 压缩texture