【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了d12r2F.java相关资料,希望对各位网友有所帮助!
import java.text.*;
public class d12r2F
{
int cint(double x)
{
int temp;
double iprt = x;
if(x > 0)
{
temp = (int)x;
x = x - temp;
if(Math.abs(x) < 0.5)
temp = (int)(iprt);
else
temp = (int)(iprt + 1);
}
else if(x == 0)
temp = 0;
else
{
temp = (int)x;
if(Math.abs(x) < 0.5)
temp = (int)(iprt);
else
temp = (int)(iprt) - 1;
}
return temp;
}
int twofft_n;
void twofft(double data1[], double data2[], double fft1[],double fft2[], int n)
{
int j, n2, j2;
double c1r, c1i, c2r, c2i, conjr, conji, h1r, h1i, h2r, h2i;
c1r = 0.5;
c1i = 0.0;
c2r = 0.0;
c2i = -0.5;
for (j = 1; j <= n; j++)
{
fft1[2 * j - 1] = data1[j];
fft1[2 * j] = data2[j];
}
four1(fft1, n, 1);
fft2[1] = fft1[2];
fft2[2] = 0.0;
fft1[2] = 0.0;
n2 = 2 * (n + 2);
for (j = 2; j <= n / 2 + 1; j++)
{
j2 = 2 * j;
conjr = fft1[n2 - j2 - 1];
conji = -fft1[n2 - j2];
h1r = c1r * (fft1[j2 - 1] + conjr) - c1i * (fft1[j2] + conji);
h1i = c1i * (fft1[j2 - 1] + conjr) + c1r * (fft1[j2] + conji);
h2r = c2r * (fft1[j2 - 1] - conjr) - c2i * (fft1[j2] - conji);
h2i = c2i * (fft1[j2 - 1] - conjr) + c2r * (fft1[j2] - conji);
fft1[j2 - 1] = h1r;
fft1[j2] = h1i;
fft1[n2 - j2 - 1] = h1r;
fft1[n2 - j2] = -h1i;
fft2[j2 - 1] = h2r;
fft2[j2] = h2i;
fft2[n2 - j2 - 1] = h2r;
fft2[n2 - j2] = -h2i;
}
twofft_n = n;
}
void prntft(double data[], double nn2)
{
int n, m, mm;
DecimalFormat form = new DecimalFormat("0.000000");
System.out.println("n Real H(n) Imag H(n) Real H(N-n) Imag H(N-n)");
System.out.println();
System.out.print("0 ");
System.out.print(form.format(data[1]) + " ");
System.out.print(form.format(data[2]) + " ");
System.out.print(form.format(data[1]) + " ");
System.out.println(form.format(data[2]) + " ");
for (n = 3; n <= (nn2 / 2) + 1; n = n + 2)
{
m = (n - 1) / 2;
mm = (int)(nn2 + 2 - n);
System.out.print(m + " ");
System.out.print(form.format(data[n]) + " ");
System.out.print(form.format(data[n + 1]) + " ");
System.out.print(form.format(data[mm]) + " ");
System.out.println(form.format(data[mm + 1]) + " ");
}
}
void four1(double data[], int nn, int isign)
{
int n, j, i, m, mmax, istep;
double tempr, tempi, theta, wpr, wpi, wr, wi, wtemp;
n = 2 * nn;
j = 1;
for (i = 1; i <= n ; i = i + 2)
{
if (j > i)
{
tempr = data[j];
tempi = data[j + 1];
data[j] = data[i];
data[j + 1] = data[i + 1];
data[i] = tempr;
data[i + 1] = tempi;
}
m = n / 2;
while (m >= 2 && j > m)
{
j = j - m;
m = m / 2;
}
j = j + m;
}
mmax = 2;
while (n > mmax )
{
istep = 2 * mmax;
theta = 6.283 / (isign * mmax);
wpr = -2.0 * Math.sin(0.5 * theta) * Math.sin(0.5 * theta);
wpi = Math.sin(theta);
wr = 1.0;
wi = 0.0;
for (m = 1; m <= mmax; m = m + 2)
{
for (i = m; i <= n; i = i + istep)
{
j = i + mmax;
tempr = (double)wr * data[j] - (double)wi * data[j + 1];
tempi = (double)wr * data[j + 1] + (double)wi * data[j];
data[j] = data[i] - tempr;
data[j + 1] = data[i + 1] - tempi;
data[i] = data[i] + tempr;
data[i + 1] = data[i + 1] + tempi;
}
wtemp = wr;
wr = wr * wpr - wi * wpi + wr;
wi = wi * wpr + wtemp * wpi + wi;
}
mmax = istep;
}
}
}
上一篇:
d12r2.java
下一篇:
多年来只想说一句,我不怪你