Hi,
Ich, bzw. hauptsächlich der
Borg hat versucht, ein DFT zu implementieren um aus einer wav-datei die Frequenzen zu bekommen. Doch offenbar mag das alles nicht so wie es soll. Manchmal kommen ganz authentische Ergebnisse raus und dann wieder nicht. es kommen Ergebnisse raus die nicht rauskommen können.
Sie liefert richtige Ergebnisse bei zB 440 Herz, bei 300 Herz funktioniert es bei zB 1000 Abtastwerten, aber bei zB 2000 nicht, da gibt es seltsame Ergebnisse (42 wär ja logisch, aber nicht mal das kommt raus
) (Anzahl der Abtastwerte=Länge des Arrays)
Anbei die DFT-Funktion.
Es wäre nett wenn sich das mal jemand anschauen könnte und uns zu einem *In-die-Holzkannte-Beiss-natürlich-da-liegt-das-Problem*-Erlebnis verhilft^^
Danke.
Delphi-Quellcode:
procedure DoDFT(var a: TComplexArray; n, lo: Integer; w: TComplex);
var b, f: array of TComplex;
I, J: Integer;
begin
setlength(b, n);
for I:=0 to n-1 do
begin
b[I]:=a[I];
a[I]:=MakeC(0, 0);
end;
setlength(f, n);
f[0]:=MakeC(1, 0);
f[1]:=w;
for I:=2 to n-1 do
f[I]:=MulC(f[I-1], w);
for I:=0 to n-1 do
for J:=0 to n-1 do
begin
a[I]:=AddC(a[I], MulC(b[J], f[I*J mod n]));
end;
end;