fft程序(c语言)

void fftt(struct COMPLEX *a,int l)
{
  const double pai=3.141592653589793;
  struct COMPLEX u,w,t,tmp1;
  unsigned n=1,nv2,nm1,k,le,lei,ip;
  unsigned i,j,m;
  double tmp;
  n<<=l;
  nv2=n>>1;
  nm1=n-1;
  j=0;
  for(i=0;i<nm1;i++)
  {
    if(i<j)
    {
      t.re=a[j].re;
      t.im=a[j].im;
      a[j].re=a[i].re;
      a[j].im=a[i].im;
      a[i].re=t.re;
      a[i].im=t.im;
     }
      k=nv2;
      while(k<=j)
      {
        j-=k;
        k>>=1;
      }
      j+=k;
    }
    le=1;
    for(m=1;m<=l;m++)
    {
      lei=le;
      le<<=1;
      u.re=1.0;
      u.im=0.0;
      tmp=pai/lei;
      w.re=cos(tmp);
      w.im=-sin(tmp);
      for(j=0;j<lei;j++)
      {
        for(i=j;i<n;i+=le)
        {
          ip=i+lei;
          mul(a[ip],u,&tmp1);
          t.re=tmp1.re;
          t.im=tmp1.im;
          sub(a[i],t,&tmp1);
          a[ip].re=tmp1.re;
          a[ip].im=tmp1.im;
          add(a[i],t,&tmp1);
          a[i].re=tmp1.re;
          a[i].im=tmp1.im;
        }
        mul(u,w,&tmp1);
        u.re=tmp1.re;
        u.im=tmp1.im;
      }
     }
 }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值