matlab 利用while循环计算平均值和方差

一、该程序是用来测输入数据的平均值和方差的

公式:

二、 项目流程:

1. State the problem
假定所有测量数为正数或者0,计算这一系列测量数的平均值和方差。
假定我们预先不知道有多少测量数据被录入,一个负数标志着测量数据输入结束

2. Define the inputs and outputs
程序要求输入的数是未知的正数或者0,程序输出的数是输入数据集的平均值和方差。
除此之外,我们将打印出输入的数据数,因为它对于我们检查输入数据是有用的

3.Define the algorithm
这个程序将被分为三个主要步骤:

Accumulate the input data
Calculate the mean(平均值)和standard deviation(方差)
Write out the mean, standard deviation , and number of points

第一个主要步骤是累计输入的数据,为了达到目的,我们将要求用户输入想要的数据,当每一个数据录入时,累计数量并求和,求平方和
伪代码:
初始化 n, sum_x, and sum_x2为0
请求用户输入
读取输入数x
while x>=0
n <- n+1
sum_x <- sum_x +x;
sum_x2 <- sum_x +x^2;
读取下一个x
end
注意:我们不得不读第一个数在while之前,以便于while循环第一次执行时有值

第二步,我们计算平均值和方差,利用平均值公式和方差公式写伪代码:

x_bar <- sum_x / n
std_dev <-sqrt( (n*sum_x2 - sum_x2^2) /(n*(n-1)) )

第三步,我们输出结果

输出平均值 x_bar
输出方差值 std_dev
输入输入数据的数量n

4.Turn the algorithm into MATLAB statements

%  脚本文件:states.m
%
% 目标:
% 该程序首先累计输入未知的数(正数或者0),然后计算这个数据集的平均值和方差
%
% 版本记录
%     日期           编者          描述
%    =====         =========     ================
% 2015-10-4 21:21     泡泡         源码
%
% 定义变量:
%
% m            --输入样本数量
% std_dev      --输入样本的方差
% sum_x        --输入样本的和
% sum_x2       --输入样本的平方和
% x            --输入样本值
% xbar         --输入样本的平均值
%
%
%
%清除变量或指令
clc;

%变量初始化
n=0; sum_x=0;sum_x2=0;

%读取第一个输入值
x=input (‘请输入第一个数: ‘);

%while循环
while x >=0
    %累积
    n      = n+1;
    sum_x  = sum_x +x;
    sum_x2 = sum_x2 +x^2;

    %读取下一个值
    x=input (‘请输入下一个数:  ‘);
end

%计算方差和平均值

x_bar =sum_x /n;
std_dev =sqrt ( (n*sum_x2 - sum_x^2) /(n*(n-1)) );

%输出
fprintf(‘您输入的数据总数为: %f\n‘, n);
fprintf(‘平均值是:%f\n‘, x_bar);
fprintf(‘方差是: %f\n‘, std_dev);

5.Test the program

假定输入的数为 3 4 5 -1(结束标志)
那么:
输出平均值 4
输出方差值 1
输入输入数据的数量 3

时间: 2024-08-27 17:30:08

matlab 利用while循环计算平均值和方差的相关文章

matlab 利用while循环计算平均值和方差(第二版)

第一版中因为公式中含有:分母项:n(n-1),而程序并没有对输入数进行判定,如果仅仅输入一个或者一个都不输入,将会出现除0的情况 基于此,进行第二版改进. 代码: % 脚本文件:states.m % % 目标: % 该程序首先累计输入未知的数(正数或者0),然后计算这个数据集的平均值和方差 % % 版本记录 % 日期 编者 描述 % ===== ========= ================ % 2015-10-4 21:21 泡泡 源码 % 2015-10-4 21:56 泡泡 纠正除0

Java利用while循环计算1+1/2!+1/3!……+1/20!

1 public static void main(String[] args) { 2 double n = 1, sum = 0; 3 while (n <= 20) { 4 sum += 1 / Factorial(n); 5 n++; 6 } 7 System.out.println(sum); 8 9 } 10 11 static double Factorial(double m) { 12 if (m == 1 || m == 0) { 13 return 1; 14 } else

利用while循环计算100*座位号 以内奇数的和。

1 n = 1 2 s = 0 3 SeatID=1 4 while n <= 100*SeatID: 5 s += n 6 n += 2 7 8 print '奇数的和:%d'%(s) 原文地址:https://www.cnblogs.com/Python-XiaCaiP/p/8521463.html

初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值

//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值package com.azhi;//纠正昨天的包名,今天老师说要以反域名命名,昨天还不知道,今天就这么弄了一个import java.util.Scanner;public class Text_Array { public static void main(String[] args){ Scanner sc=new Scanner(System.in);//从键盘输入 System.out.print("请输入学生个数:&quo

平均值μ;方差σ2;标准差σ

目录 1.平均值\(\mu\):方差\(\sigma^2\):标准差\(\sigma\)数学公式 平均数(又叫数学期望) 方差和标准差 2.案例计算--以Matlab为工具 计算平均数: 计算标准差和方差 3.信息提取 平均数 标准差 1.平均值\(\mu\):方差\(\sigma^2\):标准差\(\sigma\)数学公式 平均数(又叫数学期望) 对于数据: \[x_1 \ x_2\ x_3\ x_4\cdots \ x_n\] 平均数: \[\mu= \frac{1}{n}\cdot \su

for循环计算阶乘的和,for循环计算阶乘倒数的和

计算阶乘的和 1 //阶乘的和,5!+4!+3!+2! 2 3 int a = 5; 4 for(int b = 4; b > 0; b--) 5 { 6 a = a * b; 7 } //先定义好最大数的阶乘是多少 8 int c = a; 9 for(int n = 5; n > 1; n--) //当n等于2的时候,这是算的就是1的阶乘,所以后面取n>1 10 { 11 a = a / n; //利用数学公式,n! = (n + 1)!/(n + 1),再写出for循环计算 12

利用c语言计算n的阶乘及其求和(多种方法)

计算某一个数的阶乘: #include <stdio.h> int main() { int n,i; scanf("%d",&n); for(i=n-1;i>0;i--) { n=n*i; } printf("%d",n); return 0; } 计算1!+2!+3!+...+10! #include <stdio.h> int  main() { int a,b,c; int sum=0; for(a=1;a<=10

利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)

#include<iostream>#include<cmath>using namespace std;void main(){ //输入行列式开始 int n,i,j,a[10][10],T[10],max[10],b[10],k,q,p; float t[10][10],c,sum=-1; cout<<"阶数:"; cin>>n; cout<<"行列式:"<<endl; for(i=1;i

利用 send 方法计算多个数的平均数

利用 send 方法计算多个数的平均数,并且可以多次输入: def averager(): # 创建一个生成器函数 sum = 0 # 创建一个总数变量 count = 0 # 创建一个个数变量 avg = 0 # 创建一个平均数变量 while True: # while 循环 num = yield avg # 先执行 next,然后再执行 send,yield avg 接受 send 返给函数的值,传给 num. sum = sum + num # 第一次 sum = 0 + 10 (nu