Raised Cosine Window.

The "raised cosine" window is a family of temporal windows, from which the most known representative members are the Hann and Hamming windows.

References: Wikipedia, The Free Encyclopedia. Window function. Available on: http://en.wikipedia.org/wiki/Window_function

Inheritance: WindowBase
Ejemplo n.º 1
0
        public void waveInput()
        {
            writeHeaderForARFF();
            for (int i = 0; i < audioFileName.Length; i++)
            {
                string type;
                string name;
                setTypeAndName(audioFileName[i], out type, out name);


                Accord.Audio.Formats.WaveDecoder currentWav = new Accord.Audio.Formats.WaveDecoder(audioFileName[i]);
                //Used for time Domain
                Signal timeDomain = currentWav.Decode();


                //Creates an array of time domain samples for use in calculation of RootMeanSquare aka AverageEnergy
                float[] energyArray = new float[timeDomain.Samples];
                timeDomain.CopyTo(energyArray);

                //average energy for the current wav file
                double averageEnergy = Accord.Audio.Tools.RootMeanSquare(energyArray);
                //ZCR for the current wav file
                double zeroCrossingRate = zeroCrossingRateMethod(timeDomain);

                Accord.Audio.Windows.RaisedCosineWindow window = Accord.Audio.Windows.RaisedCosineWindow.Hamming(1024);
                Signal[] windows = timeDomain.Split(window, 512);
                //Used for Frequency Domain
                ComplexSignal[] tempFrequency = windows.Apply(ComplexSignal.FromSignal);
                tempFrequency.ForwardFourierTransform();
                ComplexSignal curComplex = tempFrequency[0];

                double[] power          = { };
                double[] magnitudes     = { };
                double[] freq           = { };
                var      length         = curComplex.Length / (2 + 1);
                double[] meanPower      = new double[length];
                double[] meanMagnitudes = new double[length];

                createFrequencyArray(tempFrequency, curComplex, out power, out magnitudes, out freq, out meanPower, out meanMagnitudes);


                //Spectral Centrois for the current wav file
                double spectralCentroid = meanMagnitudes.Zip(freq, (m, f) => m * f).Sum() / meanMagnitudes.Sum();
                //double spectralCentroid = spectralCentroidMethod(tempFrequency);

                //Writes data to arff file
                writeARFF(name, averageEnergy, zeroCrossingRate, spectralCentroid, type);
            }
        }