예제 #1
0
        public static void main(string[] args)
        {
            BenchmarkKalmanPerformance benchmark = new BenchmarkKalmanPerformance();

            benchmark.filters.Add(new KalmanFilterOperations());
            benchmark.filters.Add(new KalmanFilterSimple());
            benchmark.filters.Add(new KalmanFilterEquation());


            benchmark.run();
        }
예제 #2
0
        public void checkIdentical()
        {
            KalmanFilterSimple simple = new KalmanFilterSimple();

            List <KalmanFilter> all = new List <KalmanFilter>();

            all.Add(new KalmanFilterOperations());
            all.Add(new KalmanFilterEquation());
            all.Add(simple);

            DMatrixRMaj priorX = new DMatrixRMaj(9, 1, true, 0.5, -0.2, 0, 0, 0.2, -0.9, 0, 0.2, -0.5);
            DMatrixRMaj priorP = CommonOps_DDRM.identity(9);

            DMatrixRMaj F = BenchmarkKalmanPerformance.createF(T);
            DMatrixRMaj Q = BenchmarkKalmanPerformance.createQ(T, 0.1);
            DMatrixRMaj H = BenchmarkKalmanPerformance.createH();


            foreach (KalmanFilter f in all)
            {
                f.configure(F, Q, H);
                f.setState(priorX, priorP);
                f.predict();
            }

            foreach (KalmanFilter f in all)
            {
                compareFilters(simple, f);
            }

            DMatrixRMaj z = new DMatrixRMaj(H.numRows, 1);
            DMatrixRMaj R = CommonOps_DDRM.identity(H.numRows);

            foreach (KalmanFilter f in all)
            {
                f.update(z, R);
            }

            foreach (KalmanFilter f in all)
            {
                compareFilters(simple, f);
            }
        }