⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 用VC++实现的快速FFT算法,大家觉得可以的话就去下载吧
💻 TXT
字号:
typedef struct tagComplex{
 float Re; //复数的实部
 float Im; //复数的虚部
}Complex;
int NV2=N/2;
int NM1=N-1;
int I,J,K=0;
Complex T;//用于中介的复数变量T
I=J=1;
while(I<=NM1)
{

if(I {
  T=A[J-1];//将A[J-1]的内容和A[I-1]的内容互换,借助于中间变量T
  A[J-1]=A[I-1];
  A[I-1]=T;
 }
 K=NV2;
 while(K {
  J-=K;
  K/=2;
 }
 J+=K;
 I++;
} 


Complex U,W,T;
int LE,LE1,I,J,IP;
int N=(int)pow(2,M);
//在此采用的是时间抽选奇偶分解方式,所以在参加运算前首先要对时间序列进行倒序
ReverseOrder(A,N);
int L=1;
while(L<=M)
{
 LE=(int)pow(2,L);
 LE1=LE/2;
 U.Re=1.0f;
 U.Im=0.0f;
 W.Re=(float)cos(PI/(1.0*LE1));//计算W算子的值
 W.Im=(float)-1.0*sin(PI/(1.0*LE1));
 if(abs(W.Re)<1.0e-12)
  W.Re=0.0f;
 if(abs(W.Im)<1.0e-12)
  W.Im=0.0f;
  J=1;
  while(J<=LE1)
  {
   I=J;
   while(I<=N)
   {
    IP=I+LE1;
    T.Re=(float)A[IP-1].Re*U.Re-A[IP-1].Im*U.Im;//计算复数运算A*U
    T.Im=(float)A[IP-1].Re*U.Im+A[IP-1].Im*U.Re;
    A[IP-1].Re=(float)A[I-1].Re-T.Re;//计算复数运算A-T
    A[IP-1].Im=(float)A[I-1].Im-T.Im;
    A[I-1].Re+=T.Re;//计算复数运算A+T
    A[I-1].Im+=T.Im;
    I+=LE;
   }
   float temp=U.Re;
   U.Re=(float)U.Re*W.Re-U.Im*W.Im;//计算复数运算U*W
   U.Im=(float)temp*W.Im+U.Im*W.Re;
   J++;
  }
  L++;
 }
频率(Hz) FFT求得     X(f)     误差
  0.00   1.00006E-03  1.00000E-03  6.10352E-08
  100.00  9.67593E-04  9.67531E-04  6.14332E-08
  200.00  8.75203E-04  8.75150E-04  6.25092E-08
  300.00  7.36904E-04  7.36849E-04  6.39413E-08
  400.00  5.72852E-04  5.72787E-04  6.52926E-08
  500.00  4.05351E-04  4.05285E-04  6.61362E-08
  600.00  2.54638E-04  2.54572E-04  6.61847E-08
  700.00  1.35403E-04  1.35338E-04  6.53870E-08
  800.00  5.47602E-05  5.46963E-05  6.39612E-08
  900.00  1.20072E-05  1.19448E-05  6.23453E-08
  1000.00  6.10719E-08  1.17757E-32  6.53870E-08
  1100.00  8.05672E-06  7.99613E-06  6.05985E-08
  1200.00  2.43706E-05  2.43095E-05  6.11450E-08
  1300.00  3.93026E-05  3.92400E-05  6.25965E-08
  1400.00  4.68226E-05  4.67581E-05  6.45128E-08
  1500.00  4.50979E-05  4.50316E-05  6.62543E-08
  1600.00  3.58664E-05  3.57992E-05  6.71930E-08
  1700.00  2.30135E-05  2.29466E-05  6.69399E-08
  1800.00  1.08697E-05  1.08042E-05  6.55073E-08
  1900.00  2.74348E-06  2.68014E-05  6.33390E-08
  2000.00  6.11826E-08  1.17757E-32  6.11826E-08
  2100.00  2.25379E-06  2.19395E-06  5.98376E-08
  2200.00  7.29243E-06  7.23256E-06  5.98625E-08
  2300.00  1.25974E-05  1.25360E-05  6.13467E-08
  2400.00  1.59746E-05  1.59107E-05  6.38421E-08
  2500.00  1.62779E-05  1.62114E-05  6.64915E-08
  2600.00  1.36254E-05  1.35571E-05  6.83226E-08
  2700.00  9.16539E-06  9.09679E-06  6.86075E-08
  2800.00  4.53216E-06  4.46500E-06  6.71550E-08
  2900.00  1.21487E-06  1.15945E-06  6.44190E-08

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -