FFTのソースについて
512個のデータに対してFFTをかけ、変換後の絶対値を得たいのですが矢印の部分でプログラムがとまり、特にエラーメッセージも出ません。
原因がわかりません。申し訳ありませんが、よろしくお願いします。
void FFT(int x[], int y[])
{
int d, dn, pow, m, j1, j2, exp2, j , k, ndv2, t, flags= 1;
int n_data = 0, dnumb = 512, nf, jk;
double w, arg, c, s, t1, t2, t0, dt, ana, anb, answer;
double [] xr = new double[512];
double [] xi = new double[512];
dn=dnumb;
w=6.283185303/dnumb;
pow=exp2(dnumb); *2の何乗かを計算するメソッドです
for(t = 0; t < 512; t++){
if(t < 500)
xr[t] = x[t];
else
xr[t] = xr[499];
xi[t] = 0;
}
for(int i=1; i<=pow ; i++)
{
m=dn;
dn=dn/2;
arg=0;
for(int j=1; j<=dn; j++)
{
c=Math.cos(arg);
s=-flags*Math.sin(arg);
arg=arg+w;
k=m;
while(k<=dnumb)
{
j1=k-m+j;
j2=j1+dn;
→→→→→→→ t1=xr[j1]-xr[j2];
t2=xi[j1]-xi[j2];
xr[j1]=xr[j1]+xr[j2];
xi[j1]=xi[j1]+xi[j2];
xr[j2]=c*t1+s*t2;
xi[j2]=c*t2-s*t1;
k=k+m;
}
}
w=2*w;
}
j=1;
ndv2=dnumb/2;
for(int i=1; i<=(dnumb-1); i++)
{
if(i<j)
{
t1=xr[j];
t2=xi[j];
xr[j]=xr[i];
xi[j]=xi[i];
xr[i]=t1;
xi[i]=t2;
}
k=ndv2;
while(k<j)
{
j=j-k;
k=k/2;
}
j=j+k;
}
for(t = 0; t < 512; t++){
ana = Math.pow(xr[t], 2);
anb = Math.pow(xi[t], 2);
answer = Math.pow(ana + anb, 0.5);
}
if (flags==1)
{
for(int j=1; j<=dnumb; j++)
{
xr[j]=xr[j]/dnumb;
xi[j]=xi[j]/dnumb;
}
}
}