/// <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); }
/// <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); }