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

📄 fft1.c

📁 tms320f2812aFFT程序 调试好的 供交流
💻 C
字号:
#include "DSP28_Device.h"
#include "math.h"
#define   N  256
//#define   pi=3.141592653589793;

typedef struct         //定义表示复数的结构体
{
   double real;
   double imag;
}COMPLEX;


COMPLEX MUTIPLYCOMPLEX(COMPLEX b1,COMPLEX b2) //复数相乘函数
{
    COMPLEX b3;
    b3.real=b1.real*b2.real-b1.imag*b2.imag;
    b3.imag=b1.real*b2.imag+b1.imag*b2.real;
    return(b3);
}


//COMPLEX input_buffer[N];
/*****************************************************/
double input[]=
{
   1.5000,1.5368,1.5736,1.6103,1.6470,1.6836,1.7201,1.7564,1.7926,1.8287,
   1.8645,1.9001,1.9354,1.9705,2.0053,2.0398,2.0740,2.1079,2.1413,2.1744,
   2.2071,2.2393,2.2712,2.3025,2.3334,2.3637,2.3935,2.4228,2.4516,2.4798,
   2.5073,2.5343,2.5607,2.5864,2.6114,2.6358,2.6595,2.6825,2.7048,2.7264,
   2.7472,2.7673,2.7866,2.8051,2.8229,2.8398,2.8560,2.8713,2.8858,2.8995,
   2.9123,2.9243,2.9354,2.9457,2.9550,2.9636,2.9712,2.9779,2.9838,2.9887,
   2.9928,2.9959,2.9982,2.9995,3.0000,2.9995,2.9982,2.9959,2.9928,2.9887,
   2.9838,2.9779,2.9712,2.9636,2.9550,2.9457,2.9354,2.9243,2.9123,2.8995,
   2.8858,2.8713,2.8560,2.8398,2.8229,2.8051,2.7866,2.7673,2.7472,2.7264,
   2.7048,2.6825,2.6595,2.6358,2.6114,2.5864,2.5607,2.5343,2.5073,2.4798,
   2.4516,2.4228,2.3935,2.3637,2.3334,2.3025,2.2712,2.2393,2.2071,2.1744,
   2.1413,2.1079,2.0740,2.0398,2.0053,1.9705,1.9354,1.9001,1.8645,1.8287,
   1.7926,1.7564,1.7201,1.6836,1.6470,1.6103,1.5736,1.5368,1.5000,1.4632,
   1.4264,1.3897,1.3530,1.3164,1.2799,1.2436,1.2074,1.1713,1.1355,1.0999,
   1.0646,1.0295,0.9947,0.9602,0.9260,0.8921,0.8587,0.8256,0.7929,0.7607,
   0.7288,0.6975,0.6666,0.6363,0.6065,0.5772,0.5484,0.5202,0.4927,0.4657,
   0.4393,0.4136,0.3886,0.3642,0.3405,0.3175,0.2952,0.2736,0.2528,0.2327,
   0.2134,0.1949,0.1771,0.1602,0.1440,0.1287,0.1142,0.1005,0.0877,0.0757,
   0.0646,0.0543,0.0450,0.0364,0.0288,0.0221,0.0162,0.0113,0.0072,0.0041,
   0.0018,0.0005,0,0.0005,0.0018,0.0041,0.0072,0.0113,0.0162,0.0221,0.0288,
   0.0364,0.0450,0.0543,0.0646,0.0757,0.0877,0.1005,0.1142,0.1287,0.1440,
   0.1602,0.1771,0.1949,0.2134,0.2327,0.2528,0.2736,0.2952,0.3175,0.3405,
   0.3642,0.3886,0.4136,0.4393,0.4657,0.4927,0.5202,0.5484,0.5772,0.6065,
   0.6363,0.6666,0.6975,0.7288,0.7607,0.7929,0.8256,0.8587,0.8921,0.9260,
   0.9602,0.9947,1.0295,1.0646,1.0999,1.1355,1.1713,1.2074,1.2436,1.2799,
   1.3164,1.3530,1.3897,1.4264,1.4632,1.5000
};

COMPLEX input_buffer[N];
/****************************************************/

void FFT(int N)   /*FFT运算*/
{
    int m,LH,i,k,j,M,K;
    double p;
	double ps;
    int B,N1;
    const double pi=3.141592653589793;

    COMPLEX w,T;
    M=8;                                /*对应N值为256*/

                                   
    LH=N/2;                             /*倒序的程序*/
    j=LH;
    N1=N-2;
        
                                         /*变址运算*/
    for(i=1;i<=N1;i++)
    {
        if(i<j)
        {
            T=input_buffer[i];input_buffer[i]=input_buffer[j];input_buffer[j]=T;
        }
        K=LH;
        while(j>=K)
        {
            j=j-K;
            K=K/2;
         }
        j=j+K;
    }
    
    
    for(m=1;m<=M;m++)                        /*下面是DIT-FFT运算程序*/
    { 
      B=pow(2,m-1);     
      for(j=0;j<=B-1;j++)
       {
          p=pow(2,M-m)*j;
          ps=2*pi*p/N;
          w.real=cos(ps);
          w.imag=-sin(ps);

          for(k=j;k<=N-1;k=k+pow(2,m))
             { 
                    T=MUTIPLYCOMPLEX(input_buffer[k+B],w);
                    input_buffer[k+B].real=input_buffer[k].real-T.real;
                    input_buffer[k+B].imag=input_buffer[k].imag-T.imag;
                    input_buffer[k].real=input_buffer[k].real+T.real;
                    input_buffer[k].imag=input_buffer[k].imag+T.imag;
             }
         }
    }

}

void main (void)
{
   int i;
   //COMPLEX input_buffer[N];
   
   for(i=0;i<N;i++)
   {
     input_buffer[i].real=input[i];
     input_buffer[i].imag=0;
   } 

   
   FFT(N);

}

⌨️ 快捷键说明

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