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

第一版中因为公式中含有:分母项:n(n-1),而程序并没有对输入数进行判定,如果仅仅输入一个或者一个都不输入,将会出现除0的情况

基于此,进行第二版改进。

代码:

%  脚本文件:states.m
% 
% 目标:
% 该程序首先累计输入未知的数(正数或者0),然后计算这个数据集的平均值和方差
% 
% 版本记录
%     日期           编者          描述
%    =====         =========     ================
% 2015-10-4 21:21     泡泡         源码
% 2015-10-4 21:56     泡泡        纠正除0的情况(当仅输入0或1个数时)
% 定义变量:
% 
% 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
% % 检查是否有足够数目的输入数据
if n < 2 %数据量不足
    
    disp('要求输入数据最少为2个');
else
    
    %计算方差和平均值

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

    %输出
    fprintf('您输入的数据总数为: %f
', n);
    fprintf('平均值是:%f
', x_bar);
    fprintf('方差是: %f
', std_dev);
end
% % 
原文地址:https://www.cnblogs.com/shuqingstudy/p/4855074.html