/// <summary>
        /// Выделение огибающей на базе квадратурн. сост
        /// </summary>
        public static Vector OgibNew(Vector t, Vector st, double f0)
        {
            ComplexVector cV = new ComplexVector(t.N);

            for (int i = 0; i < t.N; i++)
            {
                cV[i] = Complex.Exp(-new Complex(0, 1) * Math.PI * 2 * f0 * t[i]);
            }

            ComplexVector newSt = st * cV;


            return(newSt.RealToVector() + newSt.ImgToVector());
        }
Example #2
0
        /// <summary>
        /// Сигнал сопряженный по Гильберту
        /// </summary>
        /// <param name="st">Исходный сигнал</param>
        public static Vector ConjugateToTheHilbert(Vector st)
        {
            ComplexVector cv = Furie.DPF(st);
            Complex       j = new Complex(0, 1);
            int           n1 = st.N / 2, n2 = st.N;

            //cv.RealToVector().Visual();
            for (int i = 0; i < n1; i++)
            {
                cv.DataInVector[i] = cv.DataInVector[i] * (-j);
            }


            for (int i = n1; i < n2; i++)
            {
                cv.DataInVector[i] = cv.DataInVector[i] * j;
            }

            cv = Furie.ODPF(cv);
            return(cv.RealToVector());
        }
        /// <summary>
        /// Сигнал сопряженный по Гильберту
        /// </summary>
        /// <param name="st">Исходный сигнал</param>
        public static Vector ConjugateToTheHilbert(Vector st)
        {
            Vector        stNew = st.CutAndZero(Functions.NextPow2(st.N));
            ComplexVector cv = Furie.fft(stNew);
            Complex       j = new Complex(0, 1);
            int           n1 = stNew.N / 2, n2 = stNew.N;


            for (int i = 0; i < n1; i++)
            {
                cv.DataInVector[i] = cv.DataInVector[i] * (-j);
            }


            for (int i = n1; i < n2; i++)
            {
                cv.DataInVector[i] = cv.DataInVector[i] * j;
            }

            cv = Furie.ifft(cv).CutAndZero(st.N);
            return(cv.RealToVector());
        }