文档介绍:快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
实验二快速傅立叶变换
一、实验目的
1.学****和掌握快速傅立叶变换(FFT)的实现过程和编程技术
2.运用C语言参考程序
(1)用FFT分析正弦信号频谱的程序
#include<>
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
voidfft(x,y,n)
/*FFT
作为子程序
*/
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
intn;
floatx[1024],y[1024];
{
inti,j,k,l,m,n1,n2;
floatc,s,e,tr,ti;
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
/*
计算
FFT的级数
M*/
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
for(j=1,i=1;i<n;i++)
{
m=i;
j=2*j;
if(j==n)break;
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
}
/*改变输入数据的顺序*/
n1=n-1;
for(j=0,i=0;i<n1;i++)
{
if(i<j)
{
tr=x[j];
ti=y[j];
x[j]=x[i];
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
y[j]=y[i];
x[i]=tr;
y[i]=ti;
}
k=n/2;
while(k<(j+1))
{
j=j-k;
k=k/2;
}
j=j+k;
}
/*三重嵌套循环进行碟形计算*/
n1=1;
for(l=1;l<=m;l++)/*分级循环*/
{
n1=2*n1;
n2=n1/2;
for(k=0;k<n2;k++)/*分组循环*/
{
c=cos(k*e);
k
/*计算W*/
N
s=-sin(k*e);
for(i=k;i<n;i+=n1)/*碟形循环*/
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
{
快速傅里叶变换概要
快速傅里叶变换概要
快速傅里叶变换概要
j=i+n2;
tr=c*x[j]-s*y[j];/*计算碟形*/
ti=c*y[j]+s*x[j];
x[j]=x[i]-tr;
y[j]=y[i]-ti;
x[i]=x[i]+tr;
y[i]=y[i]+ti;
}
}
}
}