数学知识:
标准差体现随机变量取值与其期望值的偏差。标准差的值较大,则表明该随机变量的取值与其期望值的偏差较大
反之,则表明此偏差较小。
函数功能:
函数必须能够接受一次输入值并记录对应的已输入数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

matlab 利用persistent关键字 存储持久变量的更多相关文章

  1. vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令

    目录 1,前言 2,.env文件的作用 3,配置.env文件 4,配置启动命令 5,获取.env中的全局变量 5,实际用处 1,前言 分享一下vue项目中利用.env文件存储全局环境变量,以及利于项目 ...

  2. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  3. OC 初识NSString,self关键字,继承,成员变量的可见性,description方法

    OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符 ...

  4. C# 图解教程 第三章 类型、存储和变量

    类型.存储和变量 C#程序是一组类型声明类型是一种模板实例化类型数据成员和函数成员预定义类类型用户定义类型栈和堆 栈堆 值类型和引用类型 存储引用类型对象的成员C#类型的分类 变量静态类型和dynam ...

  5. static 和 final 关键字 对实例变量赋初始值的影响

    static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的 ...

  6. Java基础笔记(2) 程序入口 关键字 标识符 常量 变量

    提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...

  7. MATLAB利用散点进行函数曲线拟合

    原文:MATLAB利用散点进行函数曲线拟合 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/laobai1015/article/details/77 ...

  8. 利用NSUserdefaults来存储自定义的NSObject类及自定义类数组

    利用NSUserdefaults来存储自定义的NSObject类及自定义类数组 1.利用NSUserdefaults来存储自定义的NSObject类 利用NSUserdefaults也可以来存储及获取 ...

  9. 10.使用final关键字修饰一个变量时...

    10.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 答:引用不能变,不能将引用再次指向另一个新的对象,但引用所指向的对象中的内容是可以改变的. 补充: 1.对于基本类型,f ...

随机推荐

  1. set multiset 集合实现众数的统计

    众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...

  2. (简单) HDU 3308 LCIS,线段树+区间合并。

    Problem Description Given n integers. You have two operations: U A B: replace the Ath number by B. ( ...

  3. 128階數的Shunt音量控制器

    源:128階數的Shunt音量控制器 紅外線遙控 - 256階Shunt音量及控制及音源 選擇器

  4. bitmap资源回收

    这个问题哎,困扰本宫一天! bitmap不完全解决method: http://blog.csdn.net/hahahacff/article/details/8540942 http://blog. ...

  5. Oracle安装卸载

    http://study.163.com/course/courseLearn.htm?courseId=932016#/learn/video?lessonId=1115367&course ...

  6. shell sed

      匹配 sed -n '/pattern/p' file_name |sed -n 7,12p #pattern是你要查的内容 #file_name是你要查的文件 以上实现:打印出匹配结果中的7-1 ...

  7. UVa 11242 - Tour de France

    题目大意:竞赛用自行车前轮有f个齿轮,后轮有r个齿轮,根据比率计算一个spread(传播率?). 很直接的题,排序然后找商的最大值就好了,uhunt上标明level 4,我都不敢相信会这么简单,还一直 ...

  8. django学习——基础

    在ubuntu下, 安装: pip install django / sudo apt-get install python-django 项目与应用 一个project包含多个app,每个app处理 ...

  9. 1833: [ZJOI2010]count 数字计数

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 2951  Solved: 1307[Submit][ ...

  10. PHP之Mysql常用SQL语句示例的深入分析

    1.插入数据insert into表名(列名1,列名2,列名..) values(值1,值2,值...); insert into product(name, price, pic_path) val ...