資源簡介
定點基2,基3 的混合基fft,沒有加入基5的部分,不過留的有空,有興趣的談朋友可以自己加一下

代碼片段和文件信息
#include?“StdAfx.h“
void?fixedpfft(long?ixr[POINT]long?ixi[POINT]double?oxr[POINT]double?oxi[POINT]int?Rint?Pint?Q)
{
int?nn1n0ijkltpar1rpar1ipar2rpar2isq2sq3;
// long?*mr=new?long[POINT]*mi=new?long[POINT](*ar)[POINT]=new?long[POINT][POINT](*ai)[POINT]=new?long[POINT][POINT];
long?mr[POINT]mi[POINT](*ar)[POINT]=new?long[POINT][POINT](*ai)[POINT]=new?long[POINT][POINT];
// long?*wr=new?long[POINT]*wi=new?long[POINT]*w2r=new?long[POINT]*w2i=new?long[POINT]*w3r=new?long[POINT]*w3i=new?long[POINT];
long?wr[POINT]wi[POINT]w2r[POINT]w2i[POINT]w3r[POINT]w3i[POINT];
long?tmpuprupimidrmididownrdownitmp1rtmp1itmp2rtmp2i;
sq2?=?1/sqrt(2.00)*MAG+0.5;
sq3?=?1/sqrt(3.00)*MAG+0.5;
par1r?=?par2r?=?-0.5*MAG-0.5;
par1i?=?-sqrt(3.00)/2.00*MAG-0.5;
par2i?=?sqrt(3.00)/2.00*MAG+0.5;
for(n=0;n {
mr[n]?=?ixr[n];
mi[n]?=?ixi[n];
}
//計算旋轉因子;
// cout<<“旋轉因子“< for(i=0;i {
wr[i]?=?cos(2*PI/POINT*i)*MAG;
wi[i]?=?-1*sin(2*PI/POINT*i)*MAG;
// cout<<“w[“< }
// cout<<“------------------------------------------------“< //計算基二的旋轉因子;
// cout<<“基二的旋轉因子:“< for(i=0;i {
w2r[i]?=?cos(2*PI/R*i)*MAG;
w2i[i]?=?-1*sin(2*PI/R*i)*MAG;
// cout<<“w2[“< }
// cout<<“------------------------------------------------“< //計算基三的旋轉因子;
// cout<<“基三的旋轉因子:“< for(i=0;i {
w3r[i]?=?cos(2*PI/P*i)*MAG;
w3i[i]?=?-1*sin(2*PI/P*i)*MAG;
// cout<<“w3[“< }
// cout<<“------------------------------------------------“< //計算基五的旋轉因子
//分解為二維數組;
// cout<<“分解為二維數組:“< for(n1=0;n1 {
for(n0=0;n0 {
ar[n1][n0]?=?mr[P*n1+n0];
ai[n1][n0]?=?mi[P*n1+n0];
// cout<<“ax[“< }
}
// cout<<“------------------------------------------------“< //對n1部分進行二進制倒位序排序;
for(n0=0;n0 {
for(i=0;i {
k=i;
j=0;
t=log(R*1.00)/log(2.00);
while((t--)>0)
{
j=j<<1;
j=j|(k&1);
k=k>>1;
}
if(j>i)
{
tmp?=?ar[i][n0];
ar[i][n0]?=?ar[j][n0];
ar[j][n0]?=?tmp;
tmp?=?ai[i][n0];
ai[i][n0]?=?ai[j][n0];
ai[j][n0]?=?tmp;
}
}
}
/*
cout<<“二進制倒位序排序后的序列:“< for(n1=0;n1 {
for(n0=0;n0 {
cout<<“ax[“< }
}
cout<<“------------------------------------------------“< */
//基二fft;
for(n0=0;n0 {
for(i=0;i {
l=pow(2i);
for(j=0;j {
for(k=0;k {
tmp1r?=?ar[j+k+l][n0]*w2r[R*k/2/l]/MAG-ai[j+k+l][n0]*w2i[R*k/2/l]/MAG;
tmp1i?=?ar[j+k+l][n0]*w2i[R*k/2/l]/MAG+ai[j+k+l][n0]*w2r[R*k/2/l]/MAG;
upr?=?ar[j+k][n0]?+?tmp1r;
upi?=?ai[j+k][n
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6865??2010-07-22?16:18??fixedpfft.cpp
?????文件????????260??2010-07-17?17:34??fixedpfft.h
-----------?---------??----------?-----??----
?????????????????7125????????????????????2
- 上一篇:基于信息熵和TOPSIS法的目標威脅評估及排序
- 下一篇:RSA加密解密
評論
共有 條評論