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

📄 exp7c.c

📁 基于tms320vc55*系列DSP常用算法
💻 C
字号:
/*
     exp7c.c - Example to test FFT and IFFT     
               
*/

#include "icomplex.h"
#include "input7_i.dat" /* Experiment data file */

extern void fft(complex *, unsigned int, complex *, unsigned int);
extern void bit_rev(complex *, unsigned int);
extern void w_table(complex *, unsigned int);

#define N 128           /* Number of FFT points */
#define EXP 7           /* log2(N)              */

#pragma DATA_SECTION(U, "fft_coef");
#pragma DATA_SECTION(X, "fft_in");  
#pragma DATA_SECTION(spectrum, "fft_out");
#pragma DATA_SECTION(ltemp, "fft_temp"); 
#pragma DATA_SECTION(temp, "fft_temp"); 
#pragma CODE_SECTION(main, "fft_code"); 
                          
complex X[N];           /* Declare input array  */
complex U[N];           /* Twiddle e^(-j2pi/N) table */    
complex temp;
lcomplex ltemp;
int spectrum[N];
int re1[N],im1[N],re2[N],im2[N];

void main()
{
    unsigned int i,j;
    
    /* Create Twiddle lookup table for FFT */
    w_table(U, EXP);      
  
    /* Start FFT test */   
    j=0;
    for (;;)
    {
        for (i=0; i<N; i++)  
        {
            /* Generate input samples */
            X[i].re = input7_i[j++];
            X[i].im = 0;
            /* Copy to reference buffer */
            re1[i] = X[i].re;
            im1[i] = X[i].im;        

            if (j==1664)
                j=0;
    	}
        
        /* Start FFT */
        bit_rev(X,EXP);     /* Arrange X[] in bit reversal order */   
        fft(X,EXP,U,1);     /* Perform FFT */
                            
        /* Use spectrum to verify FFT result */  
        for (i=0; i<N; i++)  
        {
     	      ltemp.re = (long)X[i].re*X[i].re;
            ltemp.im = (long)X[i].im*X[i].im;        
            spectrum[i] = (int)((ltemp.re+ltemp.im)>>13);        
        }            
        
        /* Inverse FFT */
        for (i=0; i<N; i++) /* Change the sign of imag part */
        {
            X[i].im = -X[i].im;
        }                      
        
        bit_rev(X,EXP);     /* Arrange sample in bit reversal order */
        fft(X,EXP,U,0);     /* Perform IFFT */
                            
        /* Store IFFT output samples for verification */
        for (i=0; i<N; i++) 
        {
            re2[i] = X[i].re;  
            im2[i] = X[i].im;  
            
        } 
    }
}

⌨️ 快捷键说明

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