Esempio n. 1
0
        //Splits the samples up into chunks of 38 for about 300 ms
        //Study has 80% overlap of time windows, so 7-8 are thrown out for us
        static FFT_Channel[,] CreateFFTData(double[,] RawData)
        {
            FFT_Channel[,] Result = new FFT_Channel[16, (RawData.GetUpperBound(1) + 1) / 16];

            for (int i = 0; i < (RawData.GetUpperBound(1) + 1) / chunk_size; i++)
            {
                int first    = i * chunk_size;
                var x        = SampleRange(first, first + chunk_size - 1, RawData);
                var channels = SelectFFT_Sample(x);
                for (int j = 0; j < 16; j++)
                {
                    Result[j, i] = channels[j];
                }
            }
            return(Result);
        }
Esempio n. 2
0
        static FFT_Channel[] SelectFFT_Sample(double[,] RawData)
        {
            var fft = FFTData(RawData);

            FFT_Channel[] result = new FFT_Channel[fft.Length];
            for (int i = 0; i < fft.Length; i++)
            {
                result[i].Delta    = fft[i][FFTIndex(Delta, 125, fft[i].Length)];
                result[i].Theta    = fft[i][FFTIndex(Theta, 125, fft[i].Length)];
                result[i].Alpha    = fft[i][FFTIndex(Alpha, 125, fft[i].Length)];
                result[i].SMR_Beta = fft[i][FFTIndex(SMR_Beta, 125, fft[i].Length)];
                result[i].MID_Beta = fft[i][FFTIndex(MID_Beta, 125, fft[i].Length)];
                result[i].HI_Beta  = fft[i][FFTIndex(HI_Beta, 125, fft[i].Length)];
            }
            return(result);
        }