# fast fourier transform in java

• 05-29-2008, 02:16 PM
smmustakim
fast fourier transform in java
Hi! Everybody. I'm unable to get the correct Fourier image of a simple sinusoid. appreciate help in correcting the followinhg code.

void freq_spect(){

double F[][][];
double FX[][];
double f_r[];
double f_r1[];
double NNN[][];
double Four[][];
int fxy[][];
int wd=new_img.getWidth();
int ht=new_img.getHeight();
F=new double[wd][ht][2];
Four=new double[wd][ht];
FX=new double[wd][2];
f_r=new double[wd*ht];
f_r1=new double[wd*ht];
NNN=new double[wd][ht]; img_fourier=newBufferedImage(new_img.getWidth(),ne w_img.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
rstr_f=img_fourier.getRaster(); //writable raster

for (int u=0;u<new_img.getWidth();u++)
{
for (int v=0;v<new_img.getHeight();v++)
{
NNN[u][v]=rstr.getSample(u,v,0); //rstr is the writable raster of the image.
NNN[u][v]=NNN[u][v]* Math.pow(-1,(u+v));
F[u][v][0]=0;
F[u][v][1]=0;
}
}
int vv=0;
for (int u=0;u<new_img.getWidth();u++)
{

FX[u][0]=0; //real array
FX[u][1]=0; //imaginary array

for (int a=0; a<new_img.getWidth();a++)
{
for(int b=0;b<new_img.getHeight();b++)
{
FX[u][0]=FX[u][0]+(NNN[a][b])* Math.cos(Math.PI/180*( (6.28318*((u*a)/wd)));
FX[u][1] =FX[u][1]-((NNN[a][b])* Math.sin(Math.PI/180*( (6.28318*((u*a)/wd))));
}
}
}

vv=0;

for (int u=0;u<new_img.getWidth();u++)
{
for(int v=0;v<new_img.getHeight();v++)
{
for(int b=0;b<new_img.getHeight();b++)
{

F[u][v][0]=F[u][v][0]+(FX[u][0])* Math.cos(Math.PI/180*(6.28318*((v*b)/ht)))+(FX[u][1])* Math.sin(Math.PI/180*(6.28318*((v*b)/ht)));
F[u][v][1] =F[u][v][1]+(FX[u][1])* Math.cos(Math.PI/180*(6.28318*((v*b)/ht)))-((FX[u][0])* Math.sin(Math.PI/180*(6.28318*((v*b)/ht))));
}

double sum11=F[u][v][0]*F[u][v][0];
double sum22=F[u][v][1]*F[u][v][1];
Four[u][v]=(sum11+sum22);
f_r[vv]=Four[u][v];
f_r[vv]=Math.sqrt(f_r[vv]); //power spectrum
vv++;
}
}
for (int a=0; a<new_img.getWidth();a++)
for(int b=0;b<new_img.getHeight();b++)
{
rstr_f.setSample(a,b,0,Four[a][b]);
}

repaint();

}
• 12-11-2008, 09:40 PM
shiva2oo5
can you give a little more details on what you are trying to do.. i am familiar with the fft algorithm but your goal is not so selfexplanatory