Util codi FFT podeu usar això.

S

Sanbar

Guest
/ *
Aquest calcula un complex en el lloc-a-FFT complexa
X i Y són les matrius reals i imaginàries de 2 ^ m punts.
dir = 1 dóna cap endavant transformar
dir = -1 fa marxa enrere transformar
* /
FFT curt (short int dir, m de llarg, double * x, double * i)
(
n de llarg, i, i1, j, k, i2, L, L1, L2;
doble C1, C2, tx, ty, T1, T2, U1, U2, z;

/ * Calcular el nombre de punts * /
n = 1;
for (i = 0; i <m; i )
n *= 2;

/ * Fer la inversió bits * /
I2 = n>> 1;
j = 0;
for (i = 0; i <n-1; i ) (
if (i <j) (
tx = x ;
ty = y ;
x = x [j];
i = i [j];
x [j] = tx;
i [j] = ti;
)
k = i2;
while (k <= j) (
j -= k;
k>> = 1;
)
j = k;
)

/ * Calcular la FFT * /
c1 = -1,0;
c2 = 0,0;
l2 = 1;
for (l = 0; l <m, l ) (
L1 = L2;
L2 <<= 1;
U1 = 1,0;
U2 = 0,0;
for (j = 0; j <l1; j ) (
for (i = j; i <n, i = l2) (
i1 = i L1;
T1 = u1 * x [i1] - U2 * i [i1];
T2 = U1 * i [i1] U2 * x [i1];
x [i1] = x - t1;
i [i1] = y - T2;
x = t1;
i = t2;
)
z = U1 * C1 - U2 * c2;
U2 = U1 * c2 U2 * C1;
U1 = z;
)
c2 = sqrt ((1.0 - C1) / 2.0);
if (dir == 1)
c2 = c2;
c1 = sqrt ((1.0 C1) / 2.0);
)

/ * Ajustament d'escala per transformar cap endavant * /
if (dir == 1) (
for (i = 0; i <n, i ) (
x / = n;
i / = n;
)
)

return (TRUE);
)

 

Welcome to EDABoard.com

Sponsor

Back
Top