normalerweise wird ja mit 44kHz in 16 bit gesampelt.
Der Header muss dann raus.
d.h. du hast in 1 sek 44000 int16_t
das muss per 11kHz auf rund 11 000 Werte runter,
die FFT rechnet aber mit floats (da wäre es sogar egal, ob 16 oder 8 Bit Auflösung)
Geben wir dem gesprochenen Wort 2-3 sec, wären es dann 22000-33000 float-Zellen.
Zur cross correlation muss man mindestens noch mal die gleiche Länge Nullwerte hinten dran hängen,
und die FFT rechnet dabei mit Komplexen Zahlen (2 float arrays).
da wäre also eine insgesamte Arraygröße von
float fx_[fxyLen], fy_[fxyLen]
mit
#define fxyLen USHRT_MAX // == 2^16
passend.
Damit hätte man was für den Anfang...
ps,
hier ist mal ein FFT Programm, das ich für den Lego NXT geschrieben habe.
War damals aber zu langsam für cross correlation auf dem Bytecode-Interpreter.
Anfangs war es komplettes Neuland für mich als Lego-Programmierer, aber mit der Zeit habe ich ein wenig "Gefühl" für die Sache entwickelt.
Ist schon sehr beeindruckend, was die FFT leistet.
http://www.mindstormsforum.de/viewto...p=56262#p56262
Lesezeichen