求个快速傅里叶变换的C语言程序

需要做一个单片机音乐频谱分析,网上说要傅里叶变换这个算法,但我还没学傅里叶变换(而且离学到还早的很),求高手帮帮忙写下这个子函数专门处理傅里叶变换的,在说说这个函数怎么用... 需要做一个单片机音乐频谱分析,网上说要傅里叶变换这个算法,但我还没学傅里叶变换(而且离学到还早的很),求高手帮帮忙写下这个子函数专门处理傅里叶变换的,在说说这个函数怎么用,网上的教程根本看不懂啊T-T~~~跪谢!!! 展开
 我来答
苍狼_白鹿
推荐于2016-06-05 · TA获得超过11.8万个赞
知道大有可为答主
回答量:1.9万
采纳率:82%
帮助的人:5828万
展开全部
void  fft()
{
      int nn,n1,n2,i,j,k,l,m,s,l1;
      float ar[1024],ai[1024]; // 实部 虚部
      float a[2050];

      float t1,t2,x,y;
      float w1,w2,u1,u2,z;
      float fsin[10]={0.000000,1.000000,0.707107,0.3826834,0.1950903,0.09801713,0.04906767,0.02454123,0.01227154,0.00613588,};// 优化
      float fcos[10]={-1.000000,0.000000,0.7071068,0.9238796,0.9807853,0.99518472,0.99879545,0.9996988,0.9999247,0.9999812,};
      nn=1024;
      s=10;

      n1=nn/2;  n2=nn-1;
      j=1;
      for(i=1;i<=nn;i++)
      {
        a[2*i]=ar[i-1];
        a[2*i+1]=ai[i-1];
      }
      for(l=1;l<n2;l++)
      {
       if(l<j)
       {
    t1=a[2*j];
    t2=a[2*j+1];
    a[2*j]=a[2*l];
    a[2*j+1]=a[2*l+1];
    a[2*l]=t1;
    a[2*l+1]=t2;
       }
       k=n1;
       while (k<j)
       {
    j=j-k;
    k=k/2;
       }
       j=j+k;
     }
     for(i=1;i<=s;i++)
     {
    u1=1;
    u2=0;
    m=(1<<i);
    k=m>>1;
    w1=fcos[i-1];
    w2=-fsin[i-1];
    for(j=1;j<=k;j++)
    {
     for(l=j;l<nn;l=l+m)
     {
        l1=l+k;
        t1=a[2*l1]*u1-a[2*l1+1]*u2;
        t2=a[2*l1]*u2+a[2*l1+1]*u1;
        a[2*l1]=a[2*l]-t1;
        a[2*l1+1]=a[2*l+1]-t2;
        a[2*l]=a[2*l]+t1;
        a[2*l+1]=a[2*l+1]+t2;
     }
     z=u1*w1-u2*w2;
     u2=u1*w2+u2*w1;
     u1=z;
    }
     }
     for(i=1;i<=nn/2;i++)
     {
    ar[i]=a[2*i+2]/nn;
    ai[i]=-a[2*i+3]/nn;
    a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]);  // 幅值
     }
}
追问
这个怎么用?AD采集的数据怎么经过这个函数进行处理?
东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式