示例#1
0
        /// <summary>
        /// Forward Hilbert transform.
        /// </summary>
        /// <param name="A">Array</param>
        /// <returns>Array</returns>
        public Complex32[] Forward(Complex32[] A)
        {
            int N = A.Length;

            Complex32[] F = FFT.Forward(A);
            HilbertTransform.hilbertf(F, N);
            F = FFT.Backward(F);
            return(HilbertTransform.hilbertb(A, F, N));
        }
示例#2
0
        /// <summary>
        /// Forward cosine transform.
        /// </summary>
        /// <param name="A">Array</param>
        /// <returns>Array</returns>
        public float[] Forward(float[] A)
        {
            int N = A.Length, N2 = N / 2, i, k;

            Complex32[] B = new Complex32[N];

            for (i = 0; i < N2; i++)
            {
                var j = 2 * i;
                B[i]      = A[j];
                B[i + N2] = A[N - j - 1];
            }

            B = FFT.Forward(B);

            float[] C = new float[N];

            Complex32 c = -Maths.I * Maths.Pi / (2 * N);

            for (k = 0; k < N; k++)
            {
                C[k] = 2.0f * (B[k] * Maths.Exp(c * k)).Real / Maths.Sqrt(2 * N);
            }

            C[0] = C[0] / Maths.Sqrt2; // DCT-I

            return(C);
        }
示例#3
0
        /// <summary>
        /// Forward cosine transform.
        /// </summary>
        /// <param name="A">Array</param>
        /// <returns>Array</returns>
        public float[] Forward(float[] A)
        {
            int N = A.Length, N2 = N * 2, i, k;

            Complex32[] B = new Complex32[N2];

            for (i = 0; i < N; i++)
            {
                B[i] = A[i];
            }

            B = FFT.Forward(B);

            float[]   C = new float[N];
            Complex32 c = -Maths.I * Maths.Pi / N;

            for (k = 0; k < N; k++)
            {
                C[k] = 2.0f * (B[k] * Maths.Exp(c * k)).Imag;
            }

            C[0] = A[N - 1] / Maths.Sqrt2;

            return(C);
        }
示例#4
0
        /// <summary>
        /// Forward Hartley transform.
        /// </summary>
        /// <param name="A">Array</param>
        /// <returns>Array</returns>
        public float[] Forward(float[] A)
        {
            Complex32[] B = Matrice.ToComplex(A);
            B = FFT.Forward(B);

            int length = A.Length, i;

            float[] Hk = new float[length];

            for (i = 0; i < length; i++)
            {
                Hk[i] = B[i].Real - B[i].Imag;
            }

            return(Hk);
        }
示例#5
0
        /// <summary>
        /// Forward Laplace transform.
        /// </summary>
        /// <param name="A">Array</param>
        /// <returns>Array</returns>
        public Complex32[] Forward(Complex32[] A)
        {
            // Fourier transform:
            Complex32[] B = FFT.Forward(A);

            // Fourier to Laplace transform:
            laplace(B, sigma);
            return(B);
        }