基本信息
源码名称:快速傅里叶变换FFT的C程序代码实现
源码大小:0.12M
文件格式:.rar
开发语言:C/C++
更新时间:2019-08-08
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
快速傅里叶变换(Fast Fourier Transform)是离散傅里叶变换的一种快速算法,简称FFT,通过FFT可以将一个信号从时域变换到频域。
模拟信号经过A/D转换变为数字信号的过程称为采样。为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的2倍,这称之为采样定理。
假设采样频率为fs,采样点数为N,那么FFT结果就是一个N点的复数,每一个点就对应着一个频率点,某一点n(n从1开始)表示的频率为:fn=(n-1)*fs/N。
举例说明:用1kHz的采样频率采样128点,则FFT结果的128个数据即对应的频率点分别是0,1k/128,2k/128,3k/128,…,127k/128 Hz。
这个频率点的幅值为:该点复数的模值除以N/2(n=1时是直流分量,其幅值是该点的模值除以N)。
/***【快速傅里叶变换】***/
void FFT(void)
{
unsigned int i,j,k,l;
complex top,bottom,xW;
Reverse(); //码位倒序
for(i=0;i
{ //一级蝶形运算
l=1<
for(j=0;j
{ //一组蝶形运算
for(k=0;k
{ //一个蝶形运算
xW=mul(x[j k l],WN[N/(2*l)*k]); //碟间距为l
top=add(x[j k],xW); //每组的第k个蝶形
bottom=sub(x[j k],xW);
x[j k]=top;
x[j k l]=bottom;
}
}
}
}
快速傅里叶变换(Fast Fourier Transform)是离散傅里叶变换的一种快速算法,简称FFT,通过FFT可以将一个信号从时域变换到频域。
模拟信号经过A/D转换变为数字信号的过程称为采样。为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的2倍,这称之为采样定理。
假设采样频率为fs,采样点数为N,那么FFT结果就是一个N点的复数,每一个点就对应着一个频率点,某一点n(n从1开始)表示的频率为:fn=(n-1)*fs/N。
举例说明:用1kHz的采样频率采样128点,则FFT结果的128个数据即对应的频率点分别是0,1k/128,2k/128,3k/128,…,127k/128 Hz。
这个频率点的幅值为:该点复数的模值除以N/2(n=1时是直流分量,其幅值是该点的模值除以N)。
/***【快速傅里叶变换】***/
void FFT(void)
{
unsigned int i,j,k,l;
complex top,bottom,xW;
Reverse(); //码位倒序
for(i=0;i
{ //一级蝶形运算
l=1<
for(j=0;j
{ //一组蝶形运算
for(k=0;k
{ //一个蝶形运算
xW=mul(x[j k l],WN[N/(2*l)*k]); //碟间距为l
top=add(x[j k],xW); //每组的第k个蝶形
bottom=sub(x[j k],xW);
x[j k]=top;
x[j k l]=bottom;
}
}
}
}