fft的递归算法

博客展示了FFT递归算法的代码实现。定义了FFT类,其中calcFFT方法接收输入的实部和虚部数组,根据输入数组长度进行不同处理,当长度为1时直接赋值,否则进行递归计算,最终得到输出的实部和虚部数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//fft递归算法
class FFT

 public static void calcFFT(double[] rein,double[] imin,double[] reout,double[] imout,int N){
  double[] rehe = new double[N]; 

  double[] reho = new double[N]; 

  double[] reHE = new double[N]; 

  double[] reHO = new double[N]; 

  double[] imhe = new double[N]; 

  double[] imho = new double[N]; 

   
  double[] imHE = new double[N]; 

  double[] imHO = new double[N]; 

  double[] Wsin = new double[N]; 

  double[] Wcos = new double[N]; 


  if (N==1) 

  {
   reout[0]=rein[0];
   imout[0]=imin[0];

  }
  else{
   for (int i=0; i<N/2; i++)
   {
    rehe[i] = rein[2*i]; 

    reho[i] = rein[2*i+1];  

    imhe[i] = imin[2*i];
    imho[i] = imin[2*i+1];
   }

   calcFFT(rehe, imhe, reHE, imHE, N/2);   
   calcFFT(reho, imho, reHO, imHO, N/2); 
   for (int k=0;k<N/2;k++ )
   {
    Wsin[k]=Math.sin(2*Math.PI*k/N);   
    Wcos[k]=Math.cos(2*Math.PI*k/N);
   }
   
   for (int k=0; k<N/2; k++)
   {
    reout[k]= reHE[k]+Wcos[k]*reHO[k]+Wsin[k]*imHO[k];
    imout[k]= imHE[k]+Wcos[k]*imHO[k]-Wsin[k]*reHO[k];
    reout[N/2+k] = reHE[k]-Wcos[k]*reHO[k]-Wsin[k]*imHO[k];
    imout[N/2+k] = imHE[k]+Wsin[k]*reHO[k]-Wcos[k]*imHO[k];
   }

  }
 
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值