微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > FFT快速傅立叶变换程序

FFT快速傅立叶变换程序

时间:10-02 整理:3721RD 点击:
FFT快速傅立叶变换程序实验用的头文件 MYFFT.H作用:为帮助小虎子做实验,这个头文件提供了完整的一维与二维FFT算法,我想应改是够你折腾了吧!#include  // complexusing namespace std;typedef complex Comp; // 复数类型定义const float _2PI_ = 2.0f * 3.14159265f; // 常数2PI定义const int MAX_N = 256; // 最大DFT点数/*----*----*----*----*----*----*----*----*----*----*----*----*   FFT算法模块接口定义*----*----*----*----*----*----*----*----*----*----*----*----*////////////////////////////////////////////// Function name : BitReverse// Description : 二进制倒序操作// Return type : int// Argument : int src 待倒读的数// Argument : int size 二进制位数int BitReverse(int src, int size){        int tmp = src;        int des = 0;        for (int i=size-1; i>=0; i--)        {                des = ((tmp & 0x1) << i) | des;                tmp = tmp >> 1;        }        return des;}//////////////////////////////////////////////////// Function name : Reorder// Description : 数据二进制整序// Return type : void// Argument : Comp x[MAX_N] 待整序数组// Argument : int N FFT点数// Argument : int M 点数的2的幂次void Reorder(Comp x[MAX_N], int N, int M){        Comp new_x[MAX_N];        for (int i=0; i<< M);                // 二进制整序        Reorder(x, N, M);                // 旋转因子计算        Comp W[MAX_N];        CalcW(W, N, flag);                // 级内群数        int GroupNum = N/2; // 第一级的群数为N/2                // 群内蝶形单元数        int CellNum = 1; // 第一级的群内蝶形单元数为1                // 处理各级        for (int i=0; i>= 1; // 级别增加, 则相应的群数减少一半                CellNum <<= 1; // 级别增加, 则相应的群内单元数增加一倍        }                // 如果是IFFT,各元素还要再除以N        if (flag != 1)        {                for (i=0; i<< M);                // 先逐行进行 1D-FFT        for (int i=0; i<--- 计算结果再存入矩阵x中                // 再逐列进行 1D-FFT        Comp col[MAX_N];        for (int j=0; j<--- 计算结果在数组col中                                // 将结果放回矩阵第j列中                for (i=0; i<--- End of [FFT.H]

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top