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

📄 1024_fft.cpp

📁 该程序是DVB-T系统的1024点的FFT 与 IFFT 代码
💻 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 + -