资源简介
FFT(快速傅立叶变换)图文并茂附FFT源码,快速傅里叶变换原理,详细,图文并茂FFT算法附源码
代码片段和文件信息
/*********************************************************************
快速福利叶变换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);
讨论群:303616994
参考文献:
**********************************************************************/
#include
#include “fft.h“
float *SIN_TAB;//定义正弦表的存放空间
int FFT_N = 128;//定义采样点大小
/*******************************************************************
函数原型: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,int PointNum)
函数功能:创建一个正弦采样表,采样点数与福利叶变换点数相同
输入参数:*sin_t存放正弦表的数组指针PointNum采样点数
输出参数:无
******************************************************************/
void create_sin_tab(float *sin_tint PointNum)
{
int i;
SIN_TAB=sin_t;
FFT_N=PointNum;
for(i=0;i<=FFT_N/4;i++)
SIN_TAB[i]=sin(2*PI*i/FFT_N);
}
/******************************************************************
函数原型:void sin_tab(float pi)
函数功能:采用查表的方法计算一个数的正弦值
输入参数:pi 所要计算正弦值弧度值,范围0--2*PI,不满足时需要转换
输出参数:输入值pi的正弦值
******************************************************************/
float sin_tab(float pi)
{
int n=0;
float a=0;
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;
}
/*****************************************************************
函数原型:void FFT(struct compx *xin)
函数功能:对输入的复数组进行快速傅里叶变换(FFT)
输入参数:*xin复数结构体组的首地址指针,struct型
输出参数:无
*****************************************************************/
void FFT(struct compx *xin)
{
int fmiklj=0;
register int nv2nm1;
struct compx uwt;
nv2=F
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5590 2013-11-30 09:14 FFT(快速傅立叶变换)\fft.c
文件 3546785 2013-08-29 13:00 FFT(快速傅立叶变换)\FFT原理(讲得很具体).pdf
文件 80 2013-11-30 10:29 FFT(快速傅立叶变换)\FFT说明.txt
目录 0 2013-11-30 09:12 FFT(快速傅立叶变换)
----------- --------- ---------- ----- ----
3552455 4
- 上一篇:PIC16F1937例程.rar
- 下一篇:拾柴网-项目答辩PPT
相关资源
- fftw-3.3.4.tar.gz安装包
- NUFFT算法及说明
- STM32F103通过DMA传输进行快速FFT.rar
- fftw-3.2.1.rar
- myplot.rar
- 数字信号处理-快速傅里叶变换FFT实验
- 64点FFT变换
- FFT FPGA VERILOG 可综合,申请加精
- 基于FFT和小波变换的电力系统谐波检
- FFT在STM32处理器上的实现完整代码
- xilinx FFT核手册
- stm32实现4096点FFT
- 时域抽取法快速傅里叶变换FFT(以R
- 基于CUDA 的矩阵乘法和FFT 性能测试
- stm32_fft_AD9220.zip
- 第四章_快速傅里叶变换(FFT).ppt
- FFT实现OFDM的原始论文
- stm32AD采集通过fft求信号频率
- 低流速超声波多普勒流量计的设计
- verilog 编写fft
- quartus11.0 FFT IP核的实现 modelsim仿真通
- STM32+OLED25664 音乐频谱+万年历包含源码
- stm32f103上实现的一个fft算法
- 程控音频放大器+FFT频谱显示
- 基于STM32的FFT频谱分析+波形识别
- stm32f407 独立模式单通道采集(DMA FF
- STM32F407开发板集成程序
- 基于三谱线加窗插值FFT的数字电能表
- 运用STM32F407写的FFT,分辨率是1Hz。可
- STM32/ARM的官方DSP库
评论
共有 条评论