Datum:
Hallo, ich hab vor einen Audio Spektrum Analyzer zu bauen und steck gerade bei der Umsetzung von der FFT. Ich hätt in den unteren Frequenzbereichen gerne eine Auflösung von 5Hz. Womit ich die Werte doch 200ms aufnehmen muss oder(Ich nehm die Werte auf und für auf diese dann die FFT aus)? Somit hätte ich eine Aktualisierungsrate von 5Hz. Was nun wirklich extrem wenig ist. Pc-Programme schaffen doch auch bei weitem mehr. Ich komm nur nicht drauf wo da mein Denkfehler liegt. Würde mich freuen wenn mich jemand aufklährt. mfg. skyscater
Datum:
Neee, da hast Du was noch nicht richtig verstanden. Erstmal musst Du deine maximale Frequenz fmax wissen, denn es gibt da so ein Abtasttheorem: Abtastfrequenz fA > 2*fmax Nehmen wir also einfach mal fA = 40kHz, dann ergibt sich die Frequenzauflösung deiner fft in Abhängigkeit der Zahl der Abtastwerte N, mit denen Du das Spektrum berechnest. deltaf = fS/N. N kansnt du dir ja selber aussuchen, in meinem Beispiel mit deltaf = 5Hz N= fS/deltaf= 8000
Datum:
Wenn ich das N mit 8000 annehme, muss ich das Signal bei einer Samplingrate von 40kHz -> 8k/40k = 0,2 = 200ms lang aufnehmen. Womit wir wieder bei der Aktualisierungsrate von 5Hz währen. Oder hab ich da wieder was falsch verstanden? mfg.skyscater
Datum:
Ja jetzt versteh ich deine Frage auch erst, sorry. Dann stimmt das mit den 200ms.
Datum:
Wie wird das in den ganzen Programmen realisiert? Wenn die eine Auflösung von 5 Hz haben aktualisiert sich die Anzeige ja trotzdem schneller. Das Die Frequenz 5Hz sich nur 5mal sekündlich ändern kann ist mir klar, aber alle anderen (höheren) Frequenzen ändern sich ja schneller. Hoffe ihr vertseht was ich meine. mfg.skyscater
Datum:
Ich denk mal, die nutzen so eine Art Ringbuffer. Wenn du z.B. 200ms aufnimmst und dann die Daten auswertest, dann aber den Speicher nicht leer machst, sondern nur z.B. 20 weitere Werte einliest und in den Speicher "schiebst" so dass die 20 ältesten Werte raus fliegen, hast du eine höhere Aktualisierungsrate.
Datum:
Du brauchst eine zeitliche Mindestlänge um die tiefen Frequenzen erfassen zu können. Aber bei genügender Rechenpower hindert dich niemand daran alle 10 oder 20 ms die letzten n Werte zu nehmen und zu rechnen und entsprechend oft deine Anzeige zu aktualisieren. Daß die Werte dann zu einem Großteil überlappen stört ja nicht. Wobei das kein Ballerspiel ist. Zu schnelle Änderungen in einer Anzeige dienen oft nur noch zur Verwirrung.
Datum:
Michael Mokricky schrieb: > aber alle anderen (höheren) Frequenzen ändern sich ja > > schneller. Nein, auch eine 5Hz-Frequenz kann die Amplitude rascher ändern. Das ergibt esben ein Frequenzgemisch. Dasselbe ist es, wenn eine 10kHz-Welle langsam den Offset ändert: Ergibt eine eingebaute 10 Hz-Welle. Du analysierst immer einen Signalverlauf und splittest ihn in Frequenzen. Die Betrachtung, dass du eine Frequenzgemisch splittest, ist zwar richtig, aber es ist letztlich eine 2D-2D-Abbildung, die zu keinem anderen Ergebnis führt. Wenn Du einzelene Frequenzen betrachtest, dann darf sich die Frequenz gar nicht ändern, denn dadurch tauchen sofort immer andere mit auf. Wenn du die Amplitude einer starren Frequenz erhöhst, ist das während der Erhöhung so, als währe die Frequenz etwas geringer. Wenn Du die Phase vor schiebst, ist es so, als wäre sie höher. In den Übergängen gibt es immer zusätzliche oder geänderte Frequenzen.
Datum:
An und für sich gibt es da auch noch einen ganz anderen Ansatz. Wenn man das Spektrum von Audiodateien über der Zeit ansehen will hat man genau das gleiche Problem: entweder wählt man ein kurzes Zeitfenster, also hohe zeitliche Auflösung, hat dann aber keine Auflösung mehr im unteren Frequenzbereich. Oder man wählt ein langes Zeitfenster, hat dann zwar eine gute Auflösung bei den tiefen Frequenzen, jedoch keine gute Zeitauflösung mehr. Hier geht man folgenden (wesentlich komplizierteren) Weg: Man beginnt mit kurzen Zeitfenstern. Das ergibt eine gute Zeitauflösung, verwendet aber nur die obere Hälfte des Spektrums für die direkte Darstellung. Die untere Hälfte des Spektrums kombiniert man aus 2 Zeitfenstern zu einem neuen, doppelt so langen Zeitfenster zusammen. Man halbiert also für die untere Hälfte die zeitliche Auflösung und verdoppelt dabei gleichzeitig die Frequenzauflösung. Auch davon verwendet man aber wieder nur die obere Hälfte des Spektrums direkt und kombiniert wieder von 2 aufeinanderfolgenden Spektren die untere Hälfte zusammen undsoweiter. Mit jeder Oktave (von oben nach unten) halbiert sich also die zeitliche Auflösung und verdoppelt sich die Frequenzauflösung (die damit auf die logarithmisch angeordneten Töne immer gleich ist). Dies wiederholt man solange bis man auch im untersten sinnvollen Bereich die gewünschte Frequenzauflösung erreicht. Wenn man alles richtig macht, ist das Verfahren auch umkehrbar. D.h. man kann das Spektrum editieren und anschließend wieder in das Zeitsignal zurückrechnen. Ich habe zu diesem Thema vor vielen Jahren eine Diplomarbeit gelesen, die ich jetzt nicht zur Hand habe, aber vl. herausfinden könnte wie sie heißt. Meines Wissens habe ich eine Kopie angefertigt und irgendwo herumliegen. Da müsste auch die Berechnung dokumentiert sein - kann man sich aber (wenn man den Fourier verstanden hat) aber sicher auch selbst überlegen. Ein digitales Filter müsste sich auch auf diese Weise realisieren lassen (um gleichermaßen kurze Durchlaufzeit für hohe Frequenzen und präzise Bearbeitbarkeit tiefer Frequenzen im Frequenzbereich zu realisieren). Man erhält dabei offensichtlich unterschiedliche Durchlaufzeiten für hohe und tiefe Frequenzen, also auch ohne Bearbeitung nicht mehr das Originalsignal.
Datum:
Jo gibt es. Das wird entweder als Oktavfilter ausgeführt oder man nutzt nicht eine linear verteilte FFT sondern eine logarithmisch angeordete, wo die Freuquenzen gleich in Audiofrequenzen messen sind. Es bleibt aber denoch das Problem der Latenz und damit der Zuordnung der Frequenzen: Eine Basswelle beinhaltet Information aus einem viel längeren zeitlichen Bereich und kann nicht so ohne Weiteres mit einer hochfrequenten Welle wieder vereint werden. Selbst bei phasenlinearen Filtern ist das ein Erschwernis, zumal die FFT infolge des leakage-Effektes nie 100% arbeitet und Artefakte bringt. Ich habe mir mal testweise eine lückenhafte FFT aufgezogen, die nur Audiofrequenzen kennt, die aber ihrerseits ganzzahlig in die Messperioden passen. Wenn man sie komplex ausführt, gelangt man in der Tat zu einem Ergebnis, dass wieder synthesefähig wird, also z.B. zu einem Equalizer, der wirklich annähernd unverzerrt wieder gibt. Ich benutze einen solchen EQ fürs professionelle Mastering in meiner FGPA-Workstation. Problem: Man hat gewaltige Latenzen und einen ordentlichen RAM-Bedarf. Ein solcher Konstrukt eigent sich damit nicht für wirtschaftliche Produkte, ist also nicht verkäuflich.
Datum:
ich hänge mich mal an die Diskussion dran, da ich eine grundlegende Frage habe: Freddy schrieb: > Nehmen wir also einfach mal fA = 40kHz, dann ergibt sich die > Frequenzauflösung deiner fft in Abhängigkeit der Zahl der Abtastwerte N, > mit denen Du das Spektrum berechnest. deltaf = fS/N. Welcher Frequenz entspricht denn dann die erste und die letzte Frequenz, die die FFT ermittelt?