Hallo,
Ich suche nach einem Trick, wie man es schaffen kann mittels DFT eine exakte Frequenz zu entfernen.
Die exakte Frequenz zu bestimmen geht meistens schon durch das Zählen der Nulldurchgänge sehr exakt.
Beispiel:
Eine aufgenommene Audiodatei mit Netzbrumm auf 50,2 Hz bei Samplerate 44100. Die höchste Frequenz ist also 22050Hz.
Ich nehme jetzt 4096 große Blöcke.
Das bedeutet im Fourierraum entsprechen die Zahlen von unten nach oben:
# Frequenz
0 Offset
1 10,7692308
2 21,5384615
3 32,3076923
4 43,0769231
5 53,8461538
6 64,6153846
7 75,3846154
8 86,1538462
9 96,9230769
10 107,692308
11 118,461538
12 129,230769
13 140
14 150,769231
15 161,538462
16 172,307692
17 183,076923
18 193,846154
19 204,615385
20 215,384615
21 226,153846
22 236,923077
23 247,692308
24 258,461538
25 269,230769
26 280 . . .
4080 43938,4615
4081 43949,2308
4082 43960
4083 43970,7692
4084 43981,5385
4085 43992,3077
4086 44003,0769
4087 44013,8462
4088 44024,6154
4089 44035,3846
4090 44046,1538
4091 44056,9231
4092 44067,6923
4093 44078,4615
4094 44089,2308
4095 44100
Wenn ich jetzt das Audiosignal transformiere bekommt man ja wegen
# Frequenz
4 43,0769231
5 53,8461538
6 64,6153846
bei allen drei Positionen einen Ausschlag. Bei #5 natürlich am höchsten.
Die einzige Lösung die mir jetzt einfallen würde:
Man nimmt den 4096 Sample langen Block und interpolierst den auf ein 2^x faches länger also z.B. auf 32768. Damit würde man die Auflösung im Fourierraum erhöhen, aber exakt treffen wird man eine beliebige Frequenz dann immer noch nicht.
Hat jemand Tips für mich? [Wenn mir jemand jetzt vorschlagen will eine andere Transformation zu verwenden, dann aber bitte mit entsprechendem Quellcode in C oder Pascal, weil es mir sonst nicht weiterhilft. Es sei denn der ist einfach zu ergooglen.]
MfG und danke für alle Hinweise,
Markus
[kleine Frage nebenbei: Ist meine Interpretation der DFT-Daten so eigentlich korrekt? Ich habe das hier nur _prinzipiell_ aufschreiben wollen, damit man sieht worum es mir geht. Oder ist die Verteilung der Frequenzen auf die Fourierrheie lorarithmisch verteilt? Oder sind die Werte im Fourierraum evtl. verschoben? War mir diesbezüglich nicht sicher.]
PS: Habe ein X-Post gesetzt. Bei Antwort evtl. in die richtige NG.