示例#1
0
        /// <summary>
        /// Вычисляет интегральную функцию комплексный вектор
        /// </summary>
        /// <returns></returns>
        public static ComplexVector Integral(ComplexVector A)
        {
            int           kRasshR = 2;
            ComplexVector B = new ComplexVector(A.N), C, D = A.InterpolayrZero(kRasshR);

            for (int i = 0; i < A.N; i++)
            {
                C = A.CutAndZero(i);
                B.DataInVector[i] = Summ(C);
            }

            return(B);
        }
示例#2
0
        /// <summary>
        /// Прямая свертка комплексный вектор
        /// </summary>
        public static ComplexVector DirectConvolution(ComplexVector A, ComplexVector B)
        {
            int           nMax = A.N + B.N - 1;
            ComplexVector st, ht;

            Complex[] convolut = new Complex[nMax];


            for (int n = 0; n < nMax; n++)
            {
                st          = A.CutAndZero(n);
                ht          = B.CutAndZero(n);
                ht          = ht.Revers();
                convolut[n] = Functions.Summ(st * ht);
            }
            return(new ComplexVector(convolut));
        }
示例#3
0
        /// <summary>
        /// Круговая свертка комплексный вектор
        /// </summary>
        public static ComplexVector СircularConvolution(ComplexVector A, ComplexVector B)
        {
            if (A.N == B.N)
            {
                int           nMax = A.N;
                ComplexVector st, ht;
                Complex[]     convolut = new Complex[nMax];


                for (int n = 0; n < nMax; n++)
                {
                    st          = A.CutAndZero(n);
                    ht          = B.CutAndZero(n);
                    ht          = ht.Revers();
                    convolut[n] = Functions.Summ(st * ht);
                }
                return(new ComplexVector(convolut));
            }

            else
            {
                return(DirectConvolution(A, B));
            }
        }
示例#4
0
        /// <summary>
        /// Возвращает комплексный вектор спектра сигнала
        /// </summary>
        /// <param name="inp">Массив значений сигнала. Количество значений должно быть степенью 2</param>
        /// <returns>Массив со значениями спектра сигнала</returns>
        private static ComplexVector ifft1(ComplexVector inp)
        {
            ComplexVector inpV = inp.CutAndZero(Functions.NextPow2(inp.N));

            return(new ComplexVector(ifft(inpV.DataInVector)));
        }
示例#5
0
        /// <summary>
        /// Возвращает комплексный вектор спектра сигнала
        /// </summary>
        /// <param name="inp">Массив значений сигнала. Количество значений должно быть степенью 2</param>
        /// <returns>Массив со значениями спектра сигнала</returns>
        public static ComplexVector fft(ComplexVector inp)
        {
            ComplexVector inpV = inp.CutAndZero(Functions.NextPow2(inp.N));

            return(new ComplexVector(fft(inpV.DataInVector)));
        }
示例#6
0
        /// <summary>
        /// ОБПФ
        /// </summary>
        /// <param name="inp">Вход</param>
        public ComplexVector IFFT(ComplexVector inp)
        {
            ComplexVector cV = !inp.CutAndZero(_n); // Комплексно-сопряженный вектор

            return(new ComplexVector(FFT(cV.DataInVector)));
        }