資源簡(jiǎn)介
關(guān)于FFT程序,基2的可能能多,但基4—FFT程序代碼相對(duì)較少,這個(gè)基4—FFT程序已經(jīng)測(cè)試通過(guò)。

代碼片段和文件信息
/*時(shí)間抽選基4?16點(diǎn)FFT及IFFT算法C語(yǔ)言實(shí)現(xiàn)*/
#include?“stdio.h“
#include?“math.h“
#define?N?32
/*定義復(fù)數(shù)類型*/
typedef?struct{
?????double?real;
?????double?img;
}complex;
complex?x[N]?*W;?/*輸入序列旋轉(zhuǎn)因子*/
int?size_x=64;?????/*輸入序列的大小,在本程序中僅限4的次冪*/
double?PI;????????/*圓周率*/
int?main(){
?????int?imethod;
?????void?fft();????/*快速傅里葉變換*/
?????void?ifft();
?????void?initW();??/*初始化變換核*/
?????void?change();?/*變址*/
?????void?add(complex?acomplex?bcomplex?*c);?/*復(fù)數(shù)加法*/
?????void?mul(complex?acomplex?bcomplex?*c);?/*復(fù)數(shù)乘法*/
?????void?sub(complex?acomplex?bcomplex?*c);?/*復(fù)數(shù)減法*/
?????void?output();????????????????????????????/*輸出結(jié)果*/
?????system(“cls“);
?????PI=atan(1)*4;
//?????printf(“Please?input?the?size?of?x:\n“);
//?????scanf(“%d“&size_x);
?????printf(“Please?input?the?data?in?x[N]:\n“);
?????for(i=0;i ???????????scanf(“%lf%lf“&x.real&x.img);
//?????initW();
//?????printf(“Use?FFT(0)?or?IFFT(1)?\n“);
//?????scanf(“%d“&method);
//?????if(method==0)
//???????????fft();
//?????else
//???????????ifft();
//?????output();
//?????return?0;
}
void?add(complex?acomplex?bcomplex?*c){
?????c->real=a.real+b.real;
?????c->img=a.img+b.img;
}
void?mul(complex?acomplex?bcomplex?*c){
?????c->real=a.real*b.real?-?a.img*b.img;
?????c->img=a.real*b.img?+?a.img*b.real;
}
void?sub(complex?acomplex?bcomplex?*c){
?????c->real=a.real-b.real;
?????c->img=a.img-b.img;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1510??2010-05-23?22:17??fft-16-4.c
-----------?---------??----------?-----??----
?????????????????1510????????????????????1
評(píng)論
共有 條評(píng)論