Exemplo n.º 1
0
 public static void Windowing(double[] data, DataWindowType type)
 {
     double[] window = GetDataWindow(type, data.Length);
     for (int i = data.Length; --i >= 0;)
     {
         data[i] *= window[i];
     }
 }
Exemplo n.º 2
0
        public static double[] GetDataWindow(DataWindowType type, int size)
        {
            double[] Table = new double[size];
            Table = new double[size];

            double h = 2 * Math.PI / (size - 1);

            switch (type)
            {
            case DataWindowType.Box:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 1;
                }
                break;

            case DataWindowType.Hanning:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 0.50 - 0.50 * Math.Cos(h * i);
                }
                break;

            case DataWindowType.Hamming:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 0.54 - 0.46 * Math.Cos(h * i);
                }
                break;

            case DataWindowType.Blackman:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 0.42 - 0.50 * Math.Cos(h * i) + 0.08 * Math.Cos(2 * h * i);
                }
                break;

            case DataWindowType.Parzen:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 1.0 - Math.Abs((i * 2 - (size - 1)) / (double)(size + 1));
                }
                break;

            case DataWindowType.Welch:
                for (int i = size; --i >= 0;)
                {
                    Table[i] = 1.0 - Mt.Sq((i * 2 - (size - 1)) / (double)(size + 1));
                }
                break;
            }
            //double c = Math.Sqrt(n / Table.Sum(x => Sq(x)));
            //for (int i = n; --i >= 0; ) Table[i] *= c;
            return(Table);
        }