Beispiel #1
0
    private void InitNew()
    {
        var methods = _instance.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).Where((x) => x.Name.StartsWith("_"));

        _reflectionCache.Add(typeof(T), methods);
        _enumCache.Add(typeof(T), Enum.GetValues(typeof(T)));

        foreach (var state in _enumCache[typeof(T)])
        {
            var stateMethods = methods.Where((x) => x.Name.Contains(state.ToString()));

            var stateFunctions = new StateFunctions();

            foreach (var method in stateMethods)
            {
                var name = method.Name;

                if (name.EndsWith("_Enter"))
                {
                    stateFunctions.Enter = method;
                }
                else if (name.EndsWith("_Update"))
                {
                    stateFunctions.Update = method;
                }
                else if (name.EndsWith("_Exit"))
                {
                    stateFunctions.Exit = method;
                }
            }

            _stateFunctionLookup[(T)state] = stateFunctions;
        }
    }
Beispiel #2
0
    private void InitCached()
    {
        var methods = _reflectionCache[typeof(T)];

        foreach (var state in _enumCache[typeof(T)])
        {
            var stateMethods = methods.Where((x) => x.Name.Contains(state.ToString()));

            var stateFunctions = new StateFunctions();

            foreach (var method in stateMethods)
            {
                var name = method.Name;

                if (name.EndsWith("_Enter"))
                {
                    stateFunctions.Enter = method;
                }
                else if (name.EndsWith("_Update"))
                {
                    stateFunctions.Update = method;
                }
                else if (name.EndsWith("_Exit"))
                {
                    stateFunctions.Exit = method;
                }
            }

            _stateFunctionLookup[(T)state] = stateFunctions;
        }
    }
        //public IAdaptiveQ AdaptiveQ { get; set; }


        //public IAdaptiveR AdaptiveR { get; set; }

        //public int Size { get { return Q.ColumnCount; } }



        public DiscreteInnerWrapper(double[] measurementnoise, double[] processnoise)
        {
            KalmanFilter = DiscreteFactory.Build(processnoise.Length);


            R = MatrixBuilder.Instance.Builder.Diagonal(measurementnoise).Map(_ => Math.Pow(_, 2)); //covariance of measurement
            Q = MatrixBuilder.Instance.Builder.Diagonal(processnoise).Map(_ => Math.Pow(_, 2));     //covariance of process

            //AdaptiveQ = new DefaultAdaptiveQ(q);
            //AdaptiveR = new DefaultAdaptiveR(r);

            F = StateFunctions.BuildTransition(processnoise.Length);

            G = MatrixBuilder.Instance.Builder.Diagonal(processnoise.Length, processnoise.Length, 1); //covariance of process
            H = StateFunctions.BuildMeasurement(processnoise.Length, measurementnoise.Length);
        }
Beispiel #4
0
 /// <summary>
 /// フォームを読み込む
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MainForm_Load(object sender, EventArgs e)
 {
     state = new StateFunctions(this);
 }