• 大小: 2KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: FFT算法  C语言  

资源简介

FFT算法的C语言实现(在单片机上验证通过)

资源截图

代码片段和文件信息

#include 
#include “fft_int.h“

//此代码来源《数字信号处理C语言程序集》殷福亮、宋爱军,沈阳:辽宁科学技术出版社,1997.7
//数组x存储时域序列的实部,数组y存储时域序列的虚部
//n代表N点FFT,sign=1为FFT,sign=-1为IFFT
extern  int x[32];
extern  int y[32];
void FFT( int x[] int y[]int nint sign)
{
int ijklmn1n2;
double cc1ess1ttrti;

//unsigned char cc1ess1ttrti;
//unsigned char ijklmn1n2;
//Calculate i = log2N
for(j = 1i = 1; i<32; i++)
{
     m = i;
     j = 2*j;
     if(j == n)
         break;
}

//计算蝶形图的输入下标(码位倒读)
n1 = n - 1;
for(j=0i=0; i{
    if(i    {
         tr = x[j];
         ti = y[j];
         x[j] = x[i];
         y[j] = y[i]; 
         x[i] = tr;
         y[i] = ti;                 
    }
    k = n/2;
    while(k<(j+1))
    {
        j = j - k;
        k = k/2;              
    }
    j = j + k;
}

//计算每一级的输出,l为某一级,i为同一级的不同群,使用同一内存(即位运算)
n1 = 1;
for(l=1; l<=m; l++)
{
    n1 = 2*n1;
    n2 = n1/2;
    e = 3.1415926/n2;
    c = 1.0;
    s = 0.0;
    c1 = cos(e);
    s1 = -sign*sin(e);
    for(j=0; j    {
        for(i=j; i    

评论

共有 条评论