📄 1024_fft.cpp
字号:
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <iostream.h>
#define N 4
//void Fft(double xr[],double xi[],int N,int M);
void ChangeOrder(double xr[],double xi[]);
void fft(double yr[],double yi[]) //xr为实部,xi为虚部
{
int L,B,J,P,k,i;
double rPartKB,iPartKB;
double rCf[N],iCf[N];
double PI2=8.0*atan(1.0); // 2*pi
int M;
M=int(log(N)/log(2));
for(i=0;i<N;i++)
{
rCf[i]=cos(i*PI2/N); //旋转因子W
iCf[i]=sin(i*PI2/N);
}
ChangeOrder(yr,yi);
for(L=1;L<=M;L++) // L级运算
{
B=(int)(pow(2,(L-1))+0.5); //蝶形运算的两个输入数据相距B点
for(J=0;J<=B-1;J++)
{
P=J*((int)(pow(2,(M-L))+0.5));
for(k=J;k<=N-1;k+=(int)(pow(2,L)+0.5))
{
rPartKB=yr[k+B]*rCf[P]+yi[k+B]*iCf[P];
iPartKB=yi[k+B]*rCf[P]-yr[k+B]*iCf[P];
yr[k+B]=yr[k]-rPartKB;
yi[k+B]=yi[k]-iPartKB;
yr[k]=yr[k]+rPartKB;
yi[k]=yi[k]+iPartKB;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -