请教各位精通FFT算法和VC++的大虾

来源:百度知道 编辑:UC知道 时间:2024/07/05 12:59:42
下面是老师的关于FFT算法的一个VC程序,我研究了半天实在不明白,希望能得到前辈们的帮助——注释一下程序,越详细越好。热心的前辈我将加分!

附:由于程序太大,请愿意帮忙的大虾留个信箱,或者提供一个已有的FFT算法VC实现的代码(注释详细)。
我的信箱:tearsman520@126.com

多谢!
楼下的师兄,程序已经发到您的信箱,麻烦您啦~

把你的程序发过来看下,时序FFT算法还是挺简单的啊。
我这有两个,一个是在网上搜的,一个是我自己写的。
复数这个类自己写一个就可以了。

// FFT_t.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "complex.h"
#include "cmath"
#include "iostream"
#include "stdio.h"
#include "fstream"
using namespace std;
#include "stdio.h"
#define NUM 128

int changeadd(int k,int m)//倒序方法一,直接算出其值
{
//m是二进制数的位数
//这个地主要注意的是当m很大时,K1可能会超出范围
int k1=0;
for(int i=0;i<m;i++)
{
if(k&(int)pow(2.0,i))
k1+=pow(2.0,m-i-1);
}
return k1;
}
void FFT(complex *in,complex * out,int M)
{
ofstream file("fft.dat");
int N=pow(2.0,M);
out[0]=in[0];
out[N-1]=in[N-1];
complex t;
for(int i=1;i<N-1;i++)
{
if(i<changeadd(i,M))
{
t=in[changeadd(i,M)];
out[changeadd(i,M)]=in[i];