📄 fft_2r.h
字号:
//这一个适用于一次求两个实序列的FFT的头文件
#include <stdio.h>
#include <math.h>
#include "FFT_INT.h"
//x1--双精度实型一维数组 长度n
//开始时存放第一个序列,最后存放变换结果的前n/2+1个值,存储顺序为[Re(0),Re(1)...Re(n/2),Im(n/2-1),...Im(1)]
//其中Re(0)=X1(0),Re(n/2)=X1(n/2)
//x2--双精度实型一维数组 长度n
//开始时存放第二个序列,最后存放变换结果的前n/2+1个值,存储顺序为[Re(0),Re(1)...Re(n/2),Im(n/2-1),...Im(1)]
//其中Re(0)=X2(0),Re(n/2)=X2(n/2)
//最后根据X1(k)和X2(k)共轭对称和容易给出它们的后半部分的值
//n--整型变量 数据长度必须是2的整数次幂 即n=2^M
//请在主函数中给出定义或FFT_N的值
//double x[FFT_N],y[FFT_N];
void R2_FFT(double *x,double *y,unsigned int N,unsigned int M)
{
int N1,i;
double tr,ti;
N1=N/2; //利用实序列的特点只计算前半部分
FFT_INT(x,y,N,M);
for(i=1;i<N1;i++)
{
tr=(x[i]+x[N1-i])/2;
ti=(y[i]-y[N1-i])/2;
y[i]=(y[N1-i]+y[i])/2;
y[N1-i]=(x[N1-i]-x[i])/2;
x[i]=tr;
x[N1-i]=ti;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -