#include<math.h>
#include<stdio.h>
#include <memory>
#define FFT_COUNT 256
#define PI 3.1415926f
int FFT_R = 0;
double val[FFT_COUNT][2];
double val2[FFT_COUNT][2];
double fft_w[FFT_COUNT][2];
double fft_x1[FFT_COUNT][2];
int pos[FFT_COUNT];
double anm[FFT_COUNT];
//fft 如果isr==1表示傅氏变换时域->频域,否则表示反变换频域->时域
void fft2(double (*val_in)[2], double (*X1)[2], int isr)
{
double rcos = 0.0f, isin = 0.0f; //中间临时变量
int mmax = 0;
int n = 0, i=0, k=0, j=0;
//重新排序输入量
for(i = 0; i<FFT_COUNT; i++)
{
X1[pos[i]][0] = val_in[i][0];
X1[pos[i]][1] = val_in[i][1] * isr; //0;//
}
//第一层,表示几个蝶形
for(k=0; k<FFT_R; k++ )
{
mmax = 1 << ( k + 1 ); //2,4,8
for( j = 0; j <(mmax>>1) ; j++) //
{
int wk = j * ( 1 << ( FFT_R - k - 1) );
for( i = j; i < FFT_COUNT; i+= mmax )
fft源码,VS2010上可编译运行
本文介绍了如何在Visual Studio 2010环境下使用C语言编写并编译运行快速傅立叶变换(FFT)程序,重点讲解了关键的蝶形运算流程。
摘要由CSDN通过智能技术生成