Hier der Code:
[code]
var
SinusT = new Array (),
CosinusT = new Array (),
FD_Im = new Array (),
FD_Re = new Array (),
ED_Im = new Array (),
ED_Re = new Array ();
function FFT()
{
var
Stage,
Group,
G,
Butterfly,
B,
Top,
Bot,
Sinus,
Cosinus,
P,
Tp,
ReSinus,
ImCosinus,
ImSinus,
ReCosinus,
I;
I = 0;
Group = Samples / 2;
Butterfly = 1;
for(Stage = 0; I < 6; I++)
{
Top = 0;
Bot = Butterfly;
for(G = 0; G < Group; G++)
{
P = 0;
for(B = 1; B <= Butterfly; B++)
{
Sinus = SinusT[P];
Cosinus = CosinusT[P];
ReSinus = FD_Re[Bot] * Sinus;
ImSinus = FD_Im[Bot] * Sinus;
ReCosinus = FD_Re[Bot] * Cosinus;
ImCosinus = FD_Im[Bot] * Cosinus;
++I;
FD_Re[Bot] = FD_Re[Top] - ReCosinus - ImSinus;
FD_Im[Bot] = FD_Im[Top] - ImCosinus + ReSinus;
FD_Re[Top] = FD_Re[Top] + ReCosinus + ImSinus;
FD_Im[Top] = FD_Im[Top] + ImCosinus - ReSinus;
++Top;
++Bot;
P += Group;
};
Top = Bot;
Bot = Top + Butterfly;
};
Group /= 2;
Butterfly *= 2;
};
}
[\code]