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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM