Example #1
0
        /// <summary>
        /// 水平Kalman滤波
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        private double DoLevelKalmanFilter(double val)
        {
            var builder = new OneDimAdjustMatrixBuilder(val, Adjustment);
            var sp      = new SimpleKalmanFilter();

            Adjustment = sp.Run(builder);
            var smoothData = Adjustment.Estimated[0];

            return(smoothData);
        }
Example #2
0
        /// <summary>
        /// 滤波
        /// </summary>
        /// <param name="newVal"></param>
        /// <returns></returns>
        public RmsedNumeral Filter(RmsedNumeral newVal)
        {
            var builder = new OneDimAdjustMatrixBuilder(newVal, PrevAdjustment);
            var sp      = new SimpleKalmanFilter();
            var a       = sp.Run(builder);
            var est     = a.Estimated;

            this.PrevAdjustment = a;//update
            return(new RmsedNumeral(est[0], est.GetRmsVector()[0]));
        }
        /// <summary>
        /// 滤波。默认期望为常数。
        /// </summary>
        /// <param name="rawValue"></param>
        /// <returns></returns>
        protected double Filter(double rawValue)
        {
            AdjustResultMatrix prev = CurrentAdjustment;

            var builder = new OneDimAdjustMatrixBuilder(rawValue, prev);
            var sp      = new SimpleKalmanFilter();
            var ad      = sp.Run(builder);

            CurrentAdjustment = ad;
            var smoothData = ad.Estimated[0];

            return(smoothData);
        }