本次实验中在Microsoft Visual Studio 2010环境下编写,实现FFT和IFFT,并用MATLAB编写显示的结果,两者相对比,进行验证。
#include “stdafx.h”
#include
#include<math.h>
#include
const double pi=3.14159265357;
#include
using namespace std;
//FFT变换
void FFT (complex *xn,int N)
{
//实现倒序
int k;
int M1=(int)(log(N*1.0)/log(2.0));
complex<double> temp;
for(int j=0;j<N;j++)
{
k=0;
for(int i=0;i<M1;i++)
k+=((j>>i)&1)<<(M1-1-i);
if(k>j)
{
temp=xn[j];
xn[j]=xn[k];
xn[k]=temp;
}
}
//三层循环
complex<double> T=0;
int M=(int)(log(N*1.0)/log(2.0));//取幂次
for(int L=1;L<=M;L++)//级循环·
{
int B=(int)pow(2.0,L-1);
for(int r=0;r<B;r++)//不同的旋转因子进行循环·
{
//int p=r*(2^(M-L));//旋转因子中的分母
int p=r*((int)pow(2.0,M-L));
for(int k=r;k<=N-1;k=k+(int)pow(2.0,L))//对应2^(M-L)个蝶形运算,蝶形相距2^L
{
//旋转因子
std::complex<double> wnr,wnrreal,wnrimage;
wnr=complex<double>(cos((-2.0*pi*p)/(N)),sin

&spm=1001.2101.3001.5002&articleId=103432076&d=1&t=3&u=d4dd0c0fd7924b969536a12cc6ed6ead)
9477

被折叠的 条评论
为什么被折叠?



