Ejemplo n.º 1
0
        public override List <Metric> getMetrics(List <Tuple <Trajectory, ESegmentType> > segments, Trajectory trajectory)
        {
            List <Metric> metrics = new List <Metric>();

            Ellipse ellipse = new Ellipse(trajectory);

            var startValueExtreamZ = trajectory.extreams.Take(10).Min(p => p.minZ);
            var reachValueExtreamZ = trajectory.extreams.Min(p => p.minZ);

            //Time domain stats
            metrics.Add(new Metric
            {
                name  = "Reach distance",
                value = startValueExtreamZ - reachValueExtreamZ
            });

            metrics.Add(new Metric
            {
                name  = "Ventral sway",
                value = trajectory.ventralDeviation()
            });

            return(metrics);
        }
Ejemplo n.º 2
0
        public override List <Metric> getMetrics(List <Tuple <Trajectory, ESegmentType> > segments, Trajectory trajectory)
        {
            List <Metric> metrics = new List <Metric>();

            Ellipse ellipse = new Ellipse(trajectory);


            //Time domain stats
            metrics.Add(new Metric
            {
                name  = "Lateral sway",
                value = trajectory.lateralDeviation()
            });
            metrics.Add(new Metric
            {
                name  = "Ventral sway",
                value = trajectory.ventralDeviation()
            });

            metrics.Add(new Metric
            {
                name  = "Median Dist",
                value = trajectory.totalDeviation()
            });

            metrics.Add(new Metric
            {
                name  = "RMS",
                value = trajectory.RMS()
            });

            metrics.Add(new Metric
            {
                name  = "Area",
                value = ellipse.area
            });

            metrics.Add(new Metric
            {
                name  = "Range A",
                value = ellipse.a * 2
            });

            metrics.Add(new Metric
            {
                name  = "Range B",
                value = ellipse.b * 2
            });

            metrics.Add(new Metric
            {
                name  = "Median Lateral Angle",
                value = (Math.Asin(trajectory.slopes.Select(p => p.x).Median()) * 180 / Math.PI)
            });

            metrics.Add(new Metric
            {
                name  = "Median Ventral Angle",
                value = (Math.Asin(trajectory.slopes.Select(p => p.z).Median()) * 180 / Math.PI)
            });

            //Frequency domain stats
            var freqMetrics = new FrequencyStats(trajectory);

            metrics.Add(new Metric
            {
                name  = "PWR",
                value = freqMetrics.totalPower
            });

            metrics.Add(new Metric
            {
                name  = "F50",
                value = freqMetrics.F50
            });

            metrics.Add(new Metric
            {
                name  = "F95",
                value = freqMetrics.F95
            });

            metrics.Add(new Metric
            {
                name  = "Centroid Freq",
                value = freqMetrics.centroidFreq
            });

            metrics.Add(new Metric
            {
                name  = "Freq Dispersion",
                value = freqMetrics.FreqDispersion
            });
            return(metrics);
        }