• fft的实现


     1     private static Complex[] FFT1(Complex[] f)
     2     {
     3         int N=f.length;
     4         int power= (int) (Math.log10(N)/Math.log10(2));
     5         Complex[] F=new Complex[N];
     6         //按奇偶分组
     7         for(int i=0;i<N;i++)
     8         {
     9             int p = 0;  
    10             for (int j = 0; j < power; j++)  
    11                 if ((i & (1 << j)) != 0)  
    12                     p += 1 << (power - j - 1);  
    13 
    14             F[p] = f[i];
    15         }
    16         //蝶形因子
    17         Complex[] wc = new Complex[N/ 2];
    18         for (int i = 0; i < N / 2; i++)
    19         {
    20             double angle = -i * Math.PI * 2 / N;
    21             wc[i]=new Complex(Math.cos(angle),Math.sin(angle));
    22         }
    23         //蝶形运算
    24         for(int L=1;L<=power;L++)//第L层数
    25         {
    26             int bf=1<<(power-L);//蝶形数
    27             for(int n=0;n<bf;n++)//第n+1个蝶形
    28             {
    29                 int bfsize=1<<L;//蝶形大小
    30                 for(int k=0;k<bfsize/2;k++)//第k+1个蝶形因子
    31                 {
    32                     Complex temp,X1,X2;;
    33                     int i=n*bfsize+k,
    34                         j=i+bfsize/2;
    35                     temp=wc[k*bf].Mul(F[j]);
    36                     X1=F[i].Add(temp);
    37                     X2=F[i].Sub(temp);
    38                     F[i]=X1;
    39                     F[j]=X2;
    40                 }            
    41             }
    42         }
    43         return F;
    44     }
  • 相关阅读:
    jmeter实战
    安卓学习进度_11
    安卓学习进度_10
    安卓学习进度_9
    安卓学习进度_8
    安卓软件学习进度_7
    安卓学习进度_6
    安卓软件学习进度_5
    安卓软件学习进度_4
    安卓软件学习进度_3
  • 原文地址:https://www.cnblogs.com/yxr1993/p/4456030.html
Copyright © 2020-2023  润新知