PDA

查看完整版本 : [分享][讨论]C++ 快速FFT(rlft3)用于2D处理


149700017
2009-02-25, 22:47
#include <cmath>
#include "nr.h"
using namesspace std;


void NR::rlft3(Mat3D_IO_DP &date, Mat_IO_DP &speq,const int isign)
"注释:已知三维实型数组 ..."
{
int i1,i2,i3,j1,j2,j3,ii3,k1,k2,k3,k4;
DP theta,wi,wpi,wpr,wr,wtemp;
DP c1,c2,h1r,h1i,h2r,h2i;
Vec_INT nnn(3);

int nn1=data.dim1();
int nn2=data.dim2();
int nn3=data.dim3();
c1=0.5;
c2=-0.5isign;
theta=isign*(2*3.1415926535897932384626/nn3)
wtemp=sin(0.5*theta);
wpr=-2.0*wtemp*wtemp;
wpi=sin(theta);
nn[0]=nn1;
nn[1]=nn2;
nn[2]=nn3>>1;
Vec_DP data_v(&data[0][0][0],nn1*nn2*nn3);
if(isign==1)
{ fourn(data_v,nn,isign);
k1=0;
for(i1=0;i1<nn1;i1++)
for(i2=0,j2=0;i2<nn2;i2++,k1+=nn3){
speq[i1][j2++]=data_v[k1];
speq[i1][j2++]=data_v[k1+1];

}
}
for (i1=0;i1<nnn1;i1++){
j1=(i1!=0? nn1-i1:0);
wr=1.0;
wi=0.0;
for(ii3=0;ii3<=(nn3>>1);ii3+=2){
k1=i1*nn2*nn3;
k3=j1*nn2*nn3;
for(i2=0;i2<nn2;i2++,k1+=nn3){
if (ii3==0){
j2=

}



}


}


}






}
部分代码,时间仓促希望朋友给补充~谢谢~多多讨论,(*^__^*) 嘻嘻……