コード例 #1
0
        public double[] Centroid()
        {
            int tailleFenetre = (int)(_Fe * _fenetre);
            int N             = _signal.Length / tailleFenetre;

            double[] res = new double[N];

            for (int i = 0; i < N; i++)
            {
                res[i] = Traitements.Centroid(_fft[i], (int)_Fe);
            }

            return(res);
        }
コード例 #2
0
        /*
         * Calcule "l'écart type de fréquence" pour une transformée de fourrier donnée
         * Il est possible de donner la Centroid si elle a déjà été calculée
         */
        public static double Spread(double[] fft, int Fe, double centroid = double.NegativeInfinity)
        {
            if (centroid == double.NegativeInfinity)
            {
                centroid = Traitements.Centroid(fft, Fe);
            }

            double somme         = 0.0;
            double sommePonderee = 0.0;

            for (int i = 0; i < fft.Length; i++)
            {
                double m = (double)Fe / (2 * fft.Length) * i;
                somme         += fft[i];
                sommePonderee += fft[i] * (m - centroid) * (m - centroid);
            }

            return(somme == 0 ? 0 : Math.Sqrt(sommePonderee / somme));
        }