资源简介
快速傅里叶变换算法,支持2的n次方点变换,并支持求相位操作。
代码片段和文件信息
#include“fft.h“
#include
#include“lm9033.h“
/*********************************************************************
快速福利叶变换C程序包
函数简介:此程序包是通用的快速傅里叶变换C语言函数,移植性强,以下部分不依
赖硬件。此程序包采用联合体的形式表示一个复数,输入为自然顺序的复
数(输入实数是可令复数虚部为0),输出为经过FFT变换的自然顺序的
复数.此程序包可在初始化时调用create_sin_tab()函数创建正弦函数表,
以后的可采用查表法计算耗时较多的sin和cos运算,加快可计算速度.与
Ver1.1版相比较,Ver1.2版在创建正弦表时只建立了1/4个正弦波的采样值,
相比之下节省了FFT_N/4个存储空间
使用说明:使用此函数只需更改宏定义FFT_N的值即可实现点数的改变,FFT_N的
应该为2的N次方,不满足此条件时应在后面补0。若使用查表法计算sin值和
cos值,应在调用FFT函数前调用create_sin_tab()函数创建正弦表
函数调用:FFT(s);
**********************************************************************/
unsigned int angle;
float SIN_TAB[FFT_N/4+1]; //定义正弦表的存放空间
struct compx s[FFT_N]; //FFT输入和输出:从S[0]开始存放,根据大小自己定义
/*******************************************************************
函数原型:struct compx EE(struct compx b1struct compx b2)
函数功能:对两个复数进行乘法运算
输入参数:两个以联合体定义的复数ab
输出参数:a和b的乘积,以联合体的形式输出
*******************************************************************/
struct compx EE(struct compx astruct compx b)
{
struct compx c;
c.real=a.real*b.real-a.imag*b.imag;
c.imag=a.real*b.imag+a.imag*b.real;
return(c);
}
/******************************************************************
函数原型:void create_sin_tab(float *sin_t)
函数功能:创建一个正弦采样表,采样点数与福利叶变换点数相同
输入参数:*sin_t存放正弦表的数组指针
输出参数:无
******************************************************************/
void create_sin_tab(float *sin_t)
{
int i;
for(i=0;i<=FFT_N/4;i++)
sin_t[i]=sin(2*PI*i/FFT_N);
}
/******************************************************************
函数原型:void sin_tab(float pi)
函数功能:采用查表的方法计算一个数的正弦值
输入参数:pi 所要计算正弦值弧度值,范围0--2*PI,不满足时需要转换
输出参数:输入值pi的正弦值
******************************************************************/
float sin_tab(float pi)
{
int n;
float a;
n=(int)(pi*FFT_N/2/PI);
if(n>=0&&n<=FFT_N/4)
a=SIN_TAB[n];
else if(n>FFT_N/4&&n
{
n-=FFT_N/4;
a=SIN_TAB[FFT_N/4-n];
}
else if(n>=FFT_N/2&&n<3*FFT_N/4)
{
n-=FFT_N/2;
a=-SIN_TAB[n];
}
else if(n>=3*FFT_N/4&&n<3*FFT_N)
{
n=FFT_N-n;
a=-SIN_TAB[n];
}
return a;
}
/******************************************************************
函数原型:void cos_tab(float pi)
函数功能:采用查表的方法计算一个数的余弦值
输入参数:pi 所要计算余弦值弧度值,范围0--2*PI,不满足时需要转换
输出参数:输入值pi的余弦值
******************************************************************/
float cos_tab(float pi)
{
float api2;
pi2=pi+PI/2;
if(pi2>2*PI)
pi2-=2*PI;
a=sin_tab(pi2);
return a;
}
/*****************************************************************
相关资源
- 基2基3定点混合基fft
- stm32f407+FFT浮点运算例程
- 基于fft的图像配准资料
- verilog编写的FFT
- CallTifftoy.rar
- fft7.v
- 16位浮点FFT算法的VHDL实现(有测试文
- TMS320C54x系列DSP上FFT运算的实现
- FPGA 256点FFT
- 基于全相位频谱的fft
- FFT高精度谐波检测方法研究
- FFT算法的hls实现
- 基于加汉宁窗的FFT高精度谐波检测改
- FFT Verilog代码
- 基于4的FFT变换
- 64点的FFT基8算法的蝶形图
- 数字信号处理大作业——编写FFT程序
- FFT_XILINX实现
- 细化FFT的短时傅里叶变换方法
- labview-fft幅值和相位
- 基4—FFT程序代码
- 基于fpga FFT处理
- 89C51FFT蝶形算法
- 1024点FFT快速傅立叶变换,16位数据输
- 3780点FFT实现
- stm32DSP 库FFT
- LABVIEW中利用FFT求波形频率
- 基于FPGA的FFT算法设计与实现
- 5529ADC采样进行fft计算
- msp430f5529计算fft程序,可用
评论
共有 条评论