亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fourier.cs

?? 用c#編寫的任意項(xiàng)傅立葉變換和2的n次項(xiàng)快速傅立葉變換的算法。
?? CS
字號(hào):
?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Mymath
{
    public static class Fourier
    {
        public enum TransformDirection
        {
            Forward = 1, Backward = -1
        };

        public static Complex[,] exp(int Len,int direction)
        {
            int i,j,n,t,L;
            Complex[,] Result=new Complex[Len,Len];
            Complex[] expn = new Complex[2*Len];
            double ang;
            L = 2 * Len;
            for (i = 0; i < L; i++)
            {
                ang = direction * Math.PI * i / Len;
                expn[i] =new Complex(Math.Cos(ang), Math.Sin(ang));
            }
            for (j = 0; j < Len; j++)
            {
                Result[0, j] = expn[0];
                Result[j, 0] = expn[0];
            }
            for (i = 1; i < Len; i++)
            {   
                n=2*i*i;
                t=2*i;
                while (n >= L)
                {
                    n -= L;
                }
                Result[i, i] = expn[n];
                for (j = i+1; j < Len; j++)
                {
                    n += t;
                    while (n >= L)
                    {
                        n -= L;
                    }
                    Result[i, j] = expn[n];
                    Result[j, i] = expn[n];
                }
            }
            return(Result);
        }

        public static Complex[] DFt(Complex[] date, int direction)
        {
            int n=date.GetLength(0);
            Complex[] Result=new Complex[n];
            Complex[,] matrix = exp(n, direction);
            for (int i = 0; i < n; i++)
            {
                Result[i] = Complex.Zero;
                for (int j = 0; j < n; j++)
                {
                    Result[i] += matrix[i, j] * date[j];
                }
            }
            return (Result);
        }

        public static Complex[,] DFt2(Complex[,] date, int direction)
        {
            int m = date.GetLength(0);
            int n = date.GetLength(1);
            Complex[,] expm = exp(m, direction);
            Complex[,] expn = exp(n, direction);
            Complex[,] MiddleResult =new Complex[m, n];
            Complex[,] Result = new Complex[m, n];
            for (int k = 0; k < m; k++)
            {
                for (int i = 0; i < n; i++)
                {
                    MiddleResult[k, i] = Complex.Zero;
                    for (int j = 0; j < n; j++)
                    {
                        MiddleResult[k, i] += expn[i, j] * date[k, j];
                    }
                }
            }
            for (int k = 0; k < n; k++)
            {
                for (int i = 0; i < m; i++)
                {
                    Result[i, k] = Complex.Zero;
                    for (int j = 0; j < m; j++)
                    {
                        Result[i, k] =Result[i,k]+MiddleResult[j, k] * expm[i, j];
                    }
                }
            }
            if (direction == 1)
            {
                double d =(double) m * n;
                for (int k = 0; k < m; k++)
                    for (int t = 0; t < n; t++)
                    {
                        Result[k, t].Re = Result[k, t].Re / d;
                        Result[k, t].Im = Result[k, t].Im / d;
                    }
            }
            return (Result);
        }
        public static int BitReverse(int src, int size)
        {
            int des = 0;
            for (int i = size - 1; i >= 0; i--)
            {
                des=((src & 0x1)<<i)|des;
                src = src >> 1;
            }
            return des;
        }
        public static Complex[] Reorder(Complex[] x,int n,int m)
        {
            Complex[] new_x =(Complex[]) x.Clone();
            for (int i = 0; i < n; i++)
                new_x[i] = x[BitReverse(i, m)];
            return new_x;
        }
        public static Complex[] Calcw(int n, int flag)
        {
            double ang;
            Complex[] w = new Complex[n];
            for (int i = 0; i < n / 2; i++)
            {
                ang = flag * 2 * Math.PI * i / n;
                w[i] = new Complex(Math.Cos(ang), Math.Sin(ang));
            }
            return w;
        }
        /// <summary>
        /// One dimensional Fast Fourier Transform
        /// </summary>
        /// <param name="data">Data to transform</param>
        /// <param name="direction">Transformation direction</param>
        /// <returns>The result array</returns>
        public static Complex[] FFT(this Complex[] data, TransformDirection direction)
        {
            int n = data.Length;
            int m = MathHelper.Log2(n);

            Complex[] result = (Complex[])data.Clone();

            // reorder data first
            ReorderData(result);

            // compute FFT
            int tn = 1, tm;

            for (int k = 1; k <= m; k++)
            {
                Complex[] rotation =GetComplexRotation(k, direction);

                tm = tn;
                tn <<= 1;

                for (int i = 0; i < tm; i++)
                {
                    Complex t = rotation[i];

                    for (int even = i; even < n; even += tn)
                    {
                        int odd = even + tm;
                        Complex ce = result[even];
                        Complex co = result[odd];

                        double tr = co.Re * t.Re - co.Im * t.Im;
                        double ti = co.Re * t.Im + co.Im * t.Re;

                        result[even].Re += tr;
                        result[even].Im += ti;

                        result[odd].Re = ce.Re - tr;
                        result[odd].Im = ce.Im - ti;
                    }
                }
            }

            if (direction == TransformDirection.Forward)
            {
                for (int i = 0; i < n; i++)
                {
                    result[i].Re /= (double)n;
                    result[i].Im /= (double)n;
                }
            }

            return result;
        }

        /// <summary>
        /// Two dimensional Fast Fourier Transform
        /// </summary>
        /// <param name="data">Data to transform</param>
        /// <param name="direction">Transformation direction</param>
        /// <returns>The result matrix</returns>
        public static Complex[,] FFt2(this Complex[,] data, TransformDirection direction)
        {
            Complex[,] result = (Complex[,])data.Clone();

            int k = result.GetLength(0);
            int n = result.GetLength(1);

            // check data size
            if (
                (!MathHelper.IsPowerOf2(k)) || (!MathHelper.IsPowerOf2(n)) ||
                (k < minLength) || (k > maxLength) ||
                (n < minLength) || (n > maxLength)
                )
            {
                throw new ArgumentException();
            }

            // process rows
            Complex[] row = new Complex[n];

            for (int i = 0; i < k; i++)
            {
                // copy row
                for (int j = 0; j < n; j++)
                    row[j] = result[i, j];
                // transform it
                row = FFT(row, direction);
                // copy back
                for (int j = 0; j < n; j++)
                    result[i, j] = row[j];
            }

            // process columns
            Complex[] col = new Complex[k];

            for (int j = 0; j < n; j++)
            {
                // copy column
                for (int i = 0; i < k; i++)
                    col[i] = result[i, j];
                // transform it
                col = FFT(col, direction);
                // copy back
                for (int i = 0; i < k; i++)
                    result[i, j] = col[i];
            }

            return result;
        }

        #region Private Region

        private const int minLength = 2;
        private const int maxLength = 16384;
        private const int minBits = 1;
        private const int maxBits = 14;
        private static int[][] reversedBits = new int[maxBits][];
        private static Complex[,][] complexRotation = new Complex[maxBits, 2][];

        // Get array, indicating which data members should be swapped before FFT
        private static int[] GetReversedBits(int numberOfBits)
        {
            if ((numberOfBits < minBits) || (numberOfBits > maxBits))
                throw new ArgumentOutOfRangeException();

            // check if the array is already calculated
            if (reversedBits[numberOfBits - 1] == null)
            {
                int n = MathHelper.Pow2(numberOfBits);
                int[] rBits = new int[n];

                // calculate the array
                for (int i = 0; i < n; i++)
                {
                    int oldBits = i;
                    int newBits = 0;

                    for (int j = 0; j < numberOfBits; j++)
                    {
                        newBits = (newBits << 1) | (oldBits & 1);
                        oldBits = (oldBits >> 1);
                    }
                    rBits[i] = newBits;
                }
                reversedBits[numberOfBits - 1] = rBits;
            }
            return reversedBits[numberOfBits - 1];
        }

        // Get rotation of complex number
        private static Complex[] GetComplexRotation(int numberOfBits, TransformDirection direction)
        {
            int directionIndex = (direction == TransformDirection.Forward) ? 0 : 1;

            // check if the array is already calculated
            if (complexRotation[numberOfBits - 1, directionIndex] == null)
            {
                int n = 1 << (numberOfBits - 1);
                double uR = 1.0;
                double uI = 0.0;
                double angle = System.Math.PI / n * (int)direction;
                double wR = System.Math.Cos(angle);
                double wI = System.Math.Sin(angle);
                double t;
                Complex[] rotation = new Complex[n];

                for (int i = 0; i < n; i++)
                {
                    rotation[i] = new Complex(uR, uI);
                    t = uR * wI + uI * wR;
                    uR = uR * wR - uI * wI;
                    uI = t;
                }

                complexRotation[numberOfBits - 1, directionIndex] = rotation;
            }
            return complexRotation[numberOfBits - 1, directionIndex];
        }

        // Reorder data for FFT using
        private static void ReorderData(Complex[] data)
        {
            int len = data.Length;

            // check data length
            if ((len < minLength) || (len > maxLength))
                throw new ArgumentException();

            int[] rBits = GetReversedBits(MathHelper.Log2(len));
            for (int i = 0; i < len; i++)
            {
                int s = rBits[i];

                if (s > i)
                {
                    Complex t = data[i];
                    data[i] = data[s];
                    data[s] = t;
                }
            }
        }

        #endregion
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩不卡一区二区| 91亚洲永久精品| 91丨porny丨户外露出| 欧美顶级少妇做爰| 亚洲激情自拍视频| 国产精品99久久久久久久女警| 欧美欧美欧美欧美| 亚洲天堂网中文字| 国产福利一区二区| 欧美一级国产精品| 亚洲大片免费看| 色婷婷亚洲精品| 综合色中文字幕| 成人在线一区二区三区| 精品少妇一区二区| 热久久一区二区| 666欧美在线视频| 亚洲一区二区黄色| 色婷婷精品久久二区二区蜜臀av| 国产日韩精品久久久| 国产一区二区福利| ww久久中文字幕| 精品亚洲成a人在线观看| 日韩一区二区高清| 男人操女人的视频在线观看欧美| 欧美综合在线视频| 一区二区三区中文免费| 91黄色免费看| 亚洲第一成年网| 欧美一区二区在线看| 日韩二区三区四区| 日韩欧美一区在线| 精品在线播放午夜| 久久综合中文字幕| 成人激情开心网| 自拍偷在线精品自拍偷无码专区| 国产91丝袜在线播放九色| 久久久高清一区二区三区| 国产精品18久久久久久vr| 国产亚洲精品久| 99视频有精品| 一区二区三区欧美| 欧美区一区二区三区| 日韩av成人高清| 精品不卡在线视频| 国产激情一区二区三区四区| 中文字幕日本不卡| 欧美影院一区二区三区| 偷拍自拍另类欧美| 26uuu欧美日本| 99国产精品视频免费观看| 亚洲精品欧美二区三区中文字幕| 欧美三级韩国三级日本三斤| 天天操天天色综合| 久久日韩精品一区二区五区| av网站一区二区三区| 亚洲午夜三级在线| 精品国产污污免费网站入口| 成人精品免费看| 亚洲国产综合91精品麻豆| 26uuu亚洲| 欧洲人成人精品| 国产一区激情在线| 亚洲精品中文在线观看| 日韩视频一区二区在线观看| 丁香六月综合激情| 丝袜国产日韩另类美女| 中文子幕无线码一区tr| 欧美高清性hdvideosex| 国产精品自拍网站| 天天综合色天天| 国产精品麻豆久久久| 欧美一级日韩一级| 成人av动漫网站| 老司机午夜精品| 亚洲制服丝袜av| 中文字幕av资源一区| 欧美美女一区二区在线观看| 国产福利电影一区二区三区| 亚洲国产成人av网| 中文字幕在线观看不卡视频| 欧美一级欧美三级在线观看| 91在线一区二区三区| 美国三级日本三级久久99| 一区二区三区四区在线播放 | 国产主播一区二区| 亚洲免费观看高清完整版在线| 欧美不卡一区二区三区| 欧洲精品一区二区| 99re亚洲国产精品| 国产电影精品久久禁18| 美女视频黄 久久| 亚洲成av人片www| 亚洲欧美激情小说另类| 中文字幕久久午夜不卡| 久久久久久久久久久久久久久99| 67194成人在线观看| 欧美亚洲高清一区| 91免费观看在线| 99re免费视频精品全部| 粉嫩蜜臀av国产精品网站| 国产乱对白刺激视频不卡| 久草这里只有精品视频| 日本美女一区二区| 午夜精品久久久久久| 一区二区三区久久久| 亚洲卡通动漫在线| 亚洲色图.com| 国产精品的网站| 中文字幕久久午夜不卡| 日本一区免费视频| 国产精品久久久久aaaa| 国产精品女主播av| 国产精品电影院| 亚洲欧美视频在线观看| 一区二区高清视频在线观看| 亚洲欧美一区二区三区国产精品| 国产精品电影一区二区| 1区2区3区国产精品| 亚洲男帅同性gay1069| 一区二区三区美女视频| 亚洲午夜精品一区二区三区他趣| 亚洲午夜电影网| 日本特黄久久久高潮| 激情文学综合网| 国产精品一二三在| a级精品国产片在线观看| 色呦呦日韩精品| 欧美日韩国产精品成人| 日韩欧美专区在线| 国产日本亚洲高清| 亚洲精品亚洲人成人网在线播放| 亚洲精品视频在线看| 亚洲123区在线观看| 玖玖九九国产精品| 国产成人综合网站| 91网址在线看| 欧美高清视频不卡网| 欧美精品一区二区三区蜜桃| 日本一区二区三区免费乱视频| 亚洲视频在线一区观看| 天堂在线亚洲视频| 国产激情视频一区二区在线观看| 91色porny在线视频| 欧美日韩国产高清一区二区| 精品国产乱码久久久久久图片| 国产精品色婷婷| 日韩激情一二三区| 成人高清伦理免费影院在线观看| 欧美性受xxxx| 国产午夜三级一区二区三| 亚洲精品久久嫩草网站秘色| 久久精品国产在热久久| thepron国产精品| 欧美美女一区二区三区| 日本一区二区不卡视频| 婷婷六月综合网| 成人网在线免费视频| 欧美精品自拍偷拍| 国产精品私人自拍| 日韩专区中文字幕一区二区| 成人妖精视频yjsp地址| 在线不卡的av| 最新不卡av在线| 寂寞少妇一区二区三区| 欧美午夜电影在线播放| 国产欧美一区二区精品性色| 偷拍一区二区三区四区| 99久久99久久精品国产片果冻| 精品伦理精品一区| 亚洲电影欧美电影有声小说| 成人伦理片在线| 欧美成人a∨高清免费观看| 亚洲一区二区精品久久av| 99这里只有久久精品视频| 日韩精品一区二区三区蜜臀| 亚洲成人久久影院| 99re这里只有精品视频首页| 久久婷婷成人综合色| 久久99久久精品欧美| 欧美日韩亚洲综合| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久99精品一区二区三区| 欧美日韩视频第一区| 一级精品视频在线观看宜春院| 成人性色生活片免费看爆迷你毛片| 欧美一级日韩免费不卡| 视频一区二区国产| 欧美日本在线观看| 一片黄亚洲嫩模| 一本色道久久综合狠狠躁的推荐| 国产婷婷一区二区| 国产精品一级黄| 国产欧美日韩在线看| 风间由美性色一区二区三区| 欧美国产日韩a欧美在线观看| 国产一区二三区| 国产欧美日韩麻豆91| 成人精品小蝌蚪| 综合av第一页|