//public static PredictionsViewModel MakeRecursiveKalmanViewModel(IScheduler scheduler) //{ // var newThread = NewThreadScheduler.Default; // var meas = Filter.Service.TimeValueServiceFactory.MakeMeasurementUnknownServiceDefault(100, newThread); // var kf = new KalmanFilter.Wrap.DiscreteWrapper(r, q); // // //kf.AdaptiveQ = new AEKFKFQ(q); // // //kf.AdaptiveR = new AEKFKFR(r); // kf = new KalmanFilter.Wrap.DiscreteWrapper(new double[] { 1 }, new double[] { 10, 10 }); // //kf.AdaptiveQ = new AEKFKFQ(q); // //kf.AdaptiveR = new AEKFKFR(r); // u = kf.BatchRunRecursive(meas); // var scheduler = new DispatcherScheduler(dispatcher); // return new PredictionsViewModel(meas, u, scheduler); //} public static IObservable <KeyValuePair <DateTime, Tuple <double, double>[]> > RunAccordKalman(IScheduler scheduler) { var meas = Filter.Service.TimeValueServiceFactory.MakeMeasurementUnknownServiceDefault(100, scheduler); var kf = new KalmanFilter.Wrap.AccordKalmanFilterWrapper(2); return(kf.Run(meas)); }
public static IEnumerable <KeyValuePair <DateTime, Tuple <double, double>[]> > RunAccordKalman(IEnumerable <KeyValuePair <DateTime, double> > meas) { var kf = new KalmanFilter.Wrap.AccordKalmanFilterWrapper(2); return(kf.BatchRun(meas)); }