ningshuxia
9 天以前 1519533649b43337d214523f7cd075edf237b3f7
02-desktop/Desktop/IStation.Test/helper/DynamicThresholdProcessorHelper.cs
@@ -4,42 +4,7 @@
    public class DynamicThresholdProcessorHelper
    {
        public static List<(int, double, double)> Filter(List<(int, double, double)> ptList)
        {
            var pressures = ptList.Select(p => p.Item3).ToList();
            // 计算统计量
            var (mean, stdDev) = CalculateStats(pressures);
            double skewness = CalculateSkewness(pressures);
            // 动态调整σ倍数
            double sigmaMultiplier = CalculateSigmaMultiplier(skewness);
            sigmaMultiplier = 3;//目前默认 标准差
            // 计算边界
            double lower = mean - sigmaMultiplier * stdDev;
            double upper = mean + sigmaMultiplier * stdDev;
            return ptList.Where(p => p.Item3 >= lower && p.Item3 <= upper).ToList();
        }
        public static List<PointViewModel> Filter(List<PointViewModel> ptList)
        {
            var pressures = ptList.Select(p => p.Y).ToList();
            // 计算统计量
            var (mean, stdDev) = CalculateStats(pressures);
            double skewness = CalculateSkewness(pressures);
            // 动态调整σ倍数
            double sigmaMultiplier = CalculateSigmaMultiplier(skewness);
            sigmaMultiplier = 3;//目前默认 标准差
            // 计算边界
            double lower = mean - sigmaMultiplier * stdDev;
            double upper = mean + sigmaMultiplier * stdDev;
            return ptList.Where(p => p.Y >= lower && p.Y <= upper).ToList();
        }
        public static List<PumpViewModel> Filter(List<PumpViewModel> ptList)
        {
@@ -108,7 +73,7 @@
        }
        // 偏度计算(Pearson's moment coefficient)
        private static double CalculateSkewness(List<double> values)
        public static double CalculateSkewness(List<double> values)
        {
            double mean = values.Average();
            double std = CalculateStats(values).stdDev;
@@ -117,7 +82,7 @@
        }
        // 动态σ倍数计算规则
        private static double CalculateSigmaMultiplier(double skewness)
        public static double CalculateSigmaMultiplier(double skewness)
        {
            return skewness switch