FFT源程序
#include "math.h"void kfft(pr,pi,n,k,fr,fi)
int n,k;
double pr[],pi[],fr[],fi[];
{
int it,m,is,i,j,nv,l0;
double p,q,s,vr,vi,poddr,poddi;
for (it=0; it<=n-1; it++)//将pr和pi循环赋值给fr[]和fi[]
{
m=it;
is=0;
for(i=0; i<=k-1; i++)
{
j=m/2;
is=2*is+(m-2*j);
m=j;
}
fr=pr;
fi=pi;
}
pr=1.0;
pi=0.0;
p=6.283185306/(1.0*n);
pr=cos(p); //将w=e^-j2pi/n用欧拉公式表示
pi=-sin(p);
for (i=2; i<=n-1; i++)//计算pr[]
{
p=pr*pr;
q=pi*pi;
s=(pr+pi)*(pr+pi);
pr=p-q; pi=s-p-q;
}
for (it=0; it<=n-2; it=it+2)
{
vr=fr;
vi=fi;
fr=vr+fr;
fi=vi+fi;
fr=vr-fr;
fi=vi-fi;
}
m=n/2;
nv=2;
for (l0=k-2; l0>=0; l0--) //蝴蝶操作
{
m=m/2;
nv=2*nv;
for (it=0; it<=(m-1)*nv; it=it+nv)
for (j=0; j<=(nv/2)-1; j++)
{
p=pr*fr;
q=pi*fi;
s=pr+pi;
s=s*(fr+fi);
poddr=p-q;
poddi=s-p-q;
fr=fr-poddr;
fi=fi-poddi;
fr=fr+poddr;
fi=fi+poddi;
}
}
for (i=0; i<=n-1; i++)
{
pr=sqrt(fr*fr+fi*fi);//幅值计算
}
return;
}
求FFT的C语言程序……最好是1024点的 怎么对ADC采集的12位数据进行FFT? 如何使用 DSP库进行FFT 怎样用C语言实现FFT算法 fft 音乐频谱怎么做 FFT的最优算法是什么?
页:
[1]