示例#1
0
        private static double [] SpatialFrequency(double [] Signal)
        {
            Complex [] CompSignal;

            CompSignal = ConvertToComplex(HanningWindow(Signal));
            Fourier.FFT(CompSignal, FourierDirection.Forward);
            return(NormalizedPositiveFrequencies(CompSignal));
        }
示例#2
0
        public static double [] SyncCoefficients(double [] Signal)
        {
            Complex [] CompSignal;
            double     Sync;

            double [] ReturnValue;

            CompSignal = ConvertToComplex(HanningWindow(Signal));
            Fourier.FFT(CompSignal, FourierDirection.Forward);
            Sync        = CompSignal[0].Magnitude;
            ReturnValue = new double [CompSignal.Length / 2];
            for (int i = 0; i < ReturnValue.Length; i++)
            {
                ReturnValue[i] = CompSignal[i].Magnitude / Sync;
            }
            ReturnValue[0] = 0;
            return(ReturnValue);
        }
示例#3
0
        public static double [] Autocorrelation(double [] Signal)
        {
            Complex [] InputSignal;
            Complex [] Correlation;

            InputSignal = ConvertToComplex(HanningWindow(Signal));
            Fourier.FFT(InputSignal, FourierDirection.Forward);
            InputSignal[0].Re = 0;
            InputSignal[0].Im = 0;
            Correlation       = new Complex[InputSignal.Length];
            for (int i = 0; i < InputSignal.Length; i++)
            {
                InputSignal[i] = InputSignal[i] / InputSignal.Length;
                Correlation[i] = InputSignal[i] * InputSignal[i].Conjugate;
            }
            Fourier.FFT(Correlation, FourierDirection.Backward);
            // Normalize by the value in the zeroth element of the array
            return(MagnitudeAndSign(Correlation));
        }
示例#4
0
        public static double [] Crosscorrelation(Complex [] SignalConjugate, double [] Signal)
        {
            Complex [] InputSignal;
            Complex [] Correlation;

            InputSignal = ConvertToComplex(HanningWindow(Signal));
            Fourier.FFT(InputSignal, FourierDirection.Forward);
            InputSignal[0].Re     = 0;
            InputSignal[0].Im     = 0;
            SignalConjugate[0].Re = 0;
            SignalConjugate[0].Im = 0;
            Correlation           = new Complex[InputSignal.Length];
            for (int i = 0; i < InputSignal.Length; i++)
            {
                InputSignal[i] = InputSignal[i] / InputSignal.Length;
                Correlation[i] = InputSignal[i] * SignalConjugate[i];
            }
            Fourier.FFT(Correlation, FourierDirection.Backward);
            // Normalize by the product of the standard deviations of the signal
            return(MagnitudeAndSign(Correlation));
        }