whycxzp
2024-01-13 c628cbf7942988ef5d0c6dd7fae447a6099a492b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.whyc.util;
 
import com.whyc.pojo.TestParam;
 
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class MathUtil {
    //均一性
    public static float getStandardDeviation(List<Float> list){
        //求平均值
        float avg = list.stream().collect(Collectors.averagingDouble(Float::floatValue)).floatValue();
 
        //求方差
        //相减,平方,累加
        float subSquareTotal = 0.0f;
        for (Float item : list) {
            subSquareTotal += (item -avg)*(item -avg);
        }
        Float s = subSquareTotal/list.size();
        //标准差
        double σ = Math.sqrt(s.doubleValue());
        return BigDecimal.valueOf(σ).setScale(4, RoundingMode.HALF_UP).floatValue();
    }
    //评判整组的好坏flag:1差,2良,3优 电压; 内阻越大越不好
    public static int getflag(float maxStd, float std, TestParam testParam){
        int flag=0;
        float judgeStdLow=0f;
        float judgeStdHigh=0f;
        maxStd=maxStd*100;
        if (testParam!=null){
            judgeStdLow=std*testParam.getResGoodCoeK3();
            judgeStdHigh=std*testParam.getResBadCoeK4();
            if(maxStd>=judgeStdHigh){
                flag=1;//"差"
            }else if(maxStd>=judgeStdLow){
                flag=2;//"良";
            }else{
                flag=3;//"优";
            }
        }
        return flag;
    }
    //评判整组的好坏flag:1 电压; 内阻越大越不好
    public static String getJudge(int flag){
        String judge="未知";
        switch (flag){
            case 1:judge="差";break;
            case 2:judge="良";break;
            case 3:judge="优";break;
        }
        return judge;
    }
 
    public static void main(String[] args) {
        Float[] f = {3.54f,3.55f,3.55f,3.56f,3.57f,3.56f,3.58f,3.58f,3.56f};
        Float[] f2 = {3.53f,3.55f,3.56f,3.57f,3.59f,3.58f,3.6f,3.6f,3.61f};
        Float standardDeviation = getStandardDeviation(Arrays.asList(f));
        Float standardDeviation2 = getStandardDeviation(Arrays.asList(f2));
        System.out.println(standardDeviation);
        System.out.println(standardDeviation2);
    }
}