Unbedingt korrigieren:
procedure TSpectrum.FFT( [B]var[/B] Dat: array of TComplex );
(Weil
var fehlte rechnete FFT für die Katz
und dein Programm stellte die gemessenen Stützpunkte der Tonkurve dar und nicht wie gewollt das Spektrum.)
Deine FFT Prozedur könntest du so testen:
Delphi-Quellcode:
procedure TSpectrum.FFT(Dat:
array of TComplex);
var
i, j, n, K , io, ie, in_, nn: Integer;
u,
tp, tq, w: TComplex;
sr: Single;
begin
if not FFTInit
then
begin
InitFFT;
FFTInit := True;
end;
// zum Beispiel durch Überschreiben von Dat durch cos(x)
for i := 0
to FFFTSize -1
do
begin
h[i].r := cos(i/FFFTSize*2*pi);
h[i].i := 0;
end;
Setze einen Breakpoint am Ende von FFT. Prüfe, ob FFT Dat[1].r = Date[FFFTSize-1].r = 0.5 und Dat[]=0 für alle anderen Werte.