1. 序列x(n)的离散傅立叶变换为:
2. 将序列x(n)按序号n的奇偶分成两组,即:
3. 周期性
4. 计算公式
5.序列X(k)的离散傅立叶反变换为:
6.运算量对比
7.算法程序FFT.h#include
void fft(double x[], double y[], int n, int sign);
void fft(double x[], double y[], int n, int sign)
{
int i,j,k,l,m,n1,n2;
double c,c1,e,s,s1,t,tr,ti;
for(j=1,i=1; i<16; i++)
{
m=i;
j=2*j;
if(j==n)break;
}
n1=n-1;
for(j=0,i=0; i
{
if(i
{
tr=x[j];
ti=y[j];
x[j]=x[i];
y[j]=y[i];
x[i]=tr;
y[i]=ti;
}
k=n/2;
while(k
{
j=j-k;
k=k/2;
}
j=j+k;
}
n1=1;
for(l=1; l<=m; l++)
{
n1=2*n1;
n2=n1/2;
e=3.14159265359/n2;
c=1.0;
s=0.0;
c1=cos(e);
s1=-sign*sin(e);
for(j=0; j
{
for(i=j; i
{
k=i+n2;
tr=c*x[k]-s*y[k];
ti=c*y[k]+s*x[k];
x[k]=x[i]-tr;
y[k]=y[i]-ti;
x[i]=x[i]+tr;
y[i]=y[i]+ti;
}
t=c;
c=c*c1-s*s1;
s=t*s1+s*c1;
}
}
if(sign==-1)
{
for(i=0; i
{
x[i]/=n;
y[i]/=n;
}
}
}
8. 部分运算结果
注:例程 (点击下载附件) 和《离散傅立叶变换》类似,只是头文件有所不同。
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。