📄 rlfft.cpp
字号:
#include <stdlib.h>
#include <math.h>
void fft(double x[32],double y[32],int n,int sign);
void rlfft(double x[64],int n)
{
int i,n1;
double a,c,e,s,fr,fi,gr,gi,*f,*g;
f=(double *)malloc(n/2*sizeof(double));
g=(double *)malloc(n/2*sizeof(double));
n1=n/2;
e=3.141592653589793/n1;
for(i=0;i<n1;i++)
{
f[i]=x[2*i];
g[i]=x[2*i+1];
}
fft(f,g,n1,1);
x[0]=f[0]+g[0];
x[n1]=f[0]-g[0];
for(i=1;i<n1;i++)
{
fr=(f[i]+f[n1-i])/2;
fi=(g[i]-g[n1-i])/2;
gr=(g[n1-i]+g[i])/2;
gi=(f[n1-i]-f[i])/2;
a=i*e;
c=cos(a);
s=sin(a);
x[i]=fr+c*gr+s*gi;
x[n-i]=fi+c*gi-s*gr;
}
free(f);
free(g);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -