频域和时域FFT及IFFT算法C++程序文档格式.docx
- 文档编号:19208392
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:44
- 大小:43.39KB
频域和时域FFT及IFFT算法C++程序文档格式.docx
《频域和时域FFT及IFFT算法C++程序文档格式.docx》由会员分享,可在线阅读,更多相关《频域和时域FFT及IFFT算法C++程序文档格式.docx(44页珍藏版)》请在冰豆网上搜索。
inti,j,k,m,n,l,r,M;
intla,lb,lc;
complext;
/*----计算分解的级数M=log2(N)----*/
for(i=N,M=1;
(i=i/2)!
=1;
M++);
/*----FFT算法----*/
for(m=1;
m<
=M;
m++)
{
la=pow(2,M+1-m);
//la=2^m代表第m级每个分组所含节点数
lb=la/2;
//lb代表第m级每个分组所含碟形单元数
//同时它也表示每个碟形单元上下节点之间的距离
/*----碟形运算----*/
for(l=1;
l<
=lb;
l++)
{
r=(l-1)*pow(2,m-1);
for(n=l-1;
n<
N-1;
n=n+la)//遍历每个分组,分组总数为N/la
{
lc=n+lb;
//n,lc分别代表一个碟形单元的上、下节点编号
t=f[n]+f[lc];
f[lc]=(f[n]-f[lc])*complex(cos(2*pi*r/N),-sin(2*pi*r/N));
f[n]=t;
}
}
}
/*----按照倒位序重新排列变换后信号----*/
for(i=1,j=N/2;
i<
=N-2;
i++)
if(i<
j)
t=f[j];
f[j]=f[i];
f[i]=t;
k=N/2;
while(k<
=j)
j=j-k;
k=k/2;
j=j+k;
}
/*----频域抽取的IFFT算法----*/
voidifft(complexf[])
/*----按照倒位序重新排列原信号----*/
/*----将信号乘以1/N----*/
for(i=0;
N;
i++)f[i]=f[i]/complex(N,0.0);
/*----IFFT算法----*/
la=pow(2,m);
//la=2^m代表第m级每个分组所含节点数
r=(l-1)*pow(2,M-m);
t=f[lc]*complex(cos(2*pi*r/N),sin(2*pi*r/N));
f[lc]=f[n]-t;
f[n]=f[n]+t;
/*----显示信号数据----*/
voiddisplay(complexf[])
inti;
cout.width(9);
cout.setf(ios:
fixed);
cout.precision(4);
cout<
<
f[i].real();
cout.flags(ios:
showpos);
f[i].imag()<
'
i'
\t'
;
cout.unsetf(ios:
if((i+1)%3==0)cout<
endl;
/*----主函数----*/
voidmain()
complexf[N];
f[i]=complex(0.8*sin(2*pi*3265*i/8000),0.0);
cout<
endl<
"
原信号:
display(f);
fft(f);
FFT变换后的信号:
ifft(f);
IFFT变换后的信号:
运行结果为:
0.0000+0.0000i0.4366+0.0000i-0.7317+0.0000i
0.7897+0.0000i-0.5917+0.0000i0.2020+0.0000i
0.2532+0.0000i-0.6263+0.0000i0.7964+0.0000i
-0.7085+0.0000i0.3909+0.0000i0.0534+0.0000i
-0.4803+0.0000i0.7516+0.0000i-0.7793+0.0000i
0.5545+0.0000i-0.1499+0.0000i-0.3032+0.0000i
0.6581+0.0000i-0.7997+0.0000i0.6821+0.0000i
-0.3435+0.0000i-0.1065+0.0000i0.5219+0.0000i
-0.7682+0.0000i0.7656+0.0000i-0.5148+0.0000i
0.0971+0.0000i0.3520+0.0000i-0.6870+0.0000i
0.7994+0.0000i-0.6527+0.0000i0.2945+0.0000i
0.1592+0.0000i-0.5612+0.0000i0.7814+0.0000i
-0.7484+0.0000i0.4728+0.0000i-0.0440+0.0000i
-0.3991+0.0000i0.7128+0.0000i-0.7955+0.0000i
0.6204+0.0000i-0.2442+0.0000i-0.2111+0.0000i
0.5980+0.0000i-0.7911+0.0000i0.7278+0.0000i
-0.4287+0.0000i-0.0094+0.0000i0.4445+0.0000i
-0.7354+0.0000i0.7881+0.0000i-0.5853+0.0000i
0.1929+0.0000i0.2621+0.0000i-0.6321+0.0000i
0.7973+0.0000i-0.7041+0.0000i0.3826+0.0000i
0.0628+0.0000i-0.4878+0.0000i0.7548+0.0000i
-0.7772+0.0000i
-0.2416+0.0000i-0.2415-0.0146i-0.2413-0.0294i
-0.2409-0.0443i-0.2402-0.0595i-0.2394-0.0751i
-0.2384-0.0911i-0.2371-0.1078i-0.2355-0.1253i
-0.2336-0.1438i-0.2314-0.1634i-0.2286-0.1844i
-0.2253-0.2072i-0.2214-0.2322i-0.2165-0.2600i
-0.2106-0.2911i-0.2032-0.3268i-0.1939-0.3683i
-0.1818-0.4177i-0.1658-0.4784i-0.1439-0.5557i
-0.1124-0.6588i-0.0643-0.8062i0.0168-1.0398i
0.1783-1.4797i0.6372-2.6746i8.8462-23.4497i
-1.6196+2.9360i-0.9624+1.2195i-0.7711+0.6680i
-0.6881+0.3740i-0.6501+0.1707i-0.6389+0.0000i
-0.6501-0.1707i-0.6881-0.3740i-0.7711-0.6680i
-0.9624-1.2195i-1.6196-2.9360i8.8462+23.4497i
0.6372+2.6746i0.1783+1.4797i0.0168+1.0398i
-0.0643+0.8062i-0.1124+0.6588i-0.1439+0.5557i
-0.1658+0.4784i-0.1818+0.4177i-0.1939+0.3683i
-0.2032+0.3268i-0.2106+0.2911i-0.2165+0.2600i
-0.2214+0.2322i-0.2253+0.2072i-0.2286+0.1844i
-0.2314+0.1634i-0.2336+0.1438i-0.2355+0.1253i
-0.2371+0.1078i-0.2384+0.0911i-0.2394+0.0751i
-0.2402+0.0595i-0.2409+0.0443i-0.2413+0.0294i
-0.2415+0.0146i
0.0000-0.0000i0.4366+0.0000i-0.7317+0.0000i
0.7897-0.0000i-0.5917-0.0000i0.2020+0.0000i
0.2532-0.0000i-0.6263+0.0000i0.7964-0.0000i
-0.7085+0.0000i0.3909-0.0000i0.0534-0.0000i
-0.4803+0.0000i0.7516-0.0000i-0.7793+0.0000i
0.5545+0.0000i-0.1499+0.0000i-0.3032-0.0000i
0.6581-0.0000i-0.7997+0.0000i0.6821-0.0000i
-0.3435-0.0000i-0.1065-0.0000i0.5219-0.0000i
-0.7682+0.0000i0.7656-0.0000i-0.5148+0.0000i
0.7994-0.0000i-0.6527-0.0000i0.2945-0.0000i
-0.3991+0.0000i0.7128-0.0000i-0.7955+0.0000i
0.6204-0.0000i-0.2442-0.0000i-0.2111-0.0000i
0.5980-0.0000i-0.7911-0.0000i0.7278-0.0000i
-0.4287+0.0000i-0.0094-0.0000i0.4445-0.0000i
-0.7354+0.0000i0.7881+0.0000i-0.5853-0.0000i
0.1929-0.0000i0.2621-0.0000i-0.6321+0.0000i
0.7973-0.0000i-0.7041+0.0000i0.3826+0.0000i
0.0628-0.0000i-0.4878+0.0000i0.7548+0.0000i
-0.7772-0.0000i
(2)时域抽取的FFT和IFFT算法
/*----时域抽取的FFT算法----*/
t=f[lc]*complex(cos(2*pi*r/N),-sin(2*pi*r/N));
/*----时域抽取的IFFT算法----*/
f[lc]=(f[n]-f[lc])*complex(cos(2*pi*r/N),sin(2*pi*r/N));
-1.6196+2.9360i-0.9624+1.2195i-0.77
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时域 FFT IFFT 算法 C+ 程序