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

📄 rad4fft.c

📁 在ADSP-2126x上编写的优化过的FFT程序(用c和汇编编写)。
💻 C
字号:
/*******************************************************************************
*
* Function:  Rad4_Twiddle_Calc - Calculate Rad4FFT twiddle factors
* Prototype:
*		void Rad4_Twiddle_Calc(
*										TCFFT4_simd_size length,	// Size of FFT
*										float *tc,						// pointer to cosine array (real)
*										float pm *ts);					// pointer to sine array (imaginary)
*
* Synopsis:  #include "Rad4FFT.h"
*            
* Description:
*		This routine calculates the twiddle factor for a Rad4FFT.  
*		The size of the FFT must be a power of 4;
*
* Author:	
*				Darrel Judd
*				Judd Labs, Inc.
*				801-756-2057
*				drjudd@ieee.org
*
* Revisions:
*					Created June, 2003 Darrel Judd
*******************************************************************************/
#include <math.h>
#include "Rad4FFT.h"



void Rad4_Twiddle_Calc(TCFFT4_simd_size length,float *tc,float pm *ts)
{   
	U32 b[length];
	U32 iter,j,k,i,index;
	float k1,k2,k3,pi;
	iter = length / (U32)4;
	pi=4.0*atanf(1.0f);
	// generate array for bit reversed addressing 
	for (i=1,j=1;i<=iter;i++) 
	{
		b[i-1] = j-1;
		k = iter/2;
		while (k<j && k!=0) 
		{
			j =j-k;
			k = k/2;
		}
		j += k;
	}

    /* calculate tables */

    k1 = (2*pi/(float)length);
    k2 = (2*pi/(float)length)*2.0f;
    k3 = (2*pi/(float)length)*3.0f;

    for (i=0,index=0;i<iter;i++,index=index+3) 
    {
      tc[index] = cosf(b[i]*k1);
      ts[index] = sinf(b[i]*k1);

      tc[index+1] = cosf(b[i]*k3);
      ts[index+1] = sinf(b[i]*k3);

      tc[index+2] = cosf(b[i]*k2);
      ts[index+2] = sinf(b[i]*k2);
    }
    
   
}

⌨️ 快捷键说明

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