Forum: Digitale Signalverarbeitung / DSP / Machine Learning Terzspektrum aus N-Punkt FFT


von Dennis J (Gast)


Lesenswert?

Hallo!
Ich arbeite z.Zt. an einem Projekt im Bereich Akustik und habe folgendes 
Problem.
Ich möchte aus einer N-Punkt FFT das Terzspektrum berechnen.
Allerdings komme ich dort momentan nicht weiter.
Momentan gehe ich in etwa so vor:

1) Index des Wertes der unteren Grenzfrequenz des Terzbandes berechnen:


2) Das Gleiche dann nochmal für die ober Grenzfrequenz:


3) Ergbenis sind zwei Indezes, die den Positionen im FFT-Array (fast) 
entsprechen.

Das Problem ist, dass die Fenstergröße natürlich die Frequenzauflösung 
bestimmt und somit zu tiefen Frequenzen hin die Ergebnisse ungenau 
werden.
Kennt jemand eine Möglichkeit dieses Problem zu umgehen/zu lösen?

Vielen Dank schonmal,

Dennis

von Horst (Gast)


Lesenswert?

Warum produzierst Du die FFT nicht gleich i Terzen?

von J. S. (engineer) Benutzerseite


Lesenswert?

Ich nehme an, Dein Problem besteht darin, dass die Frequenznummern nicht 
ganzzahlig passen. Du musst einfach interpolieren. Die Frequenzen laufen 
nach oben hin sowieso logarithmisch auseinander, also sind auch die 
Bereiche bei hohen F immer größer. Du gehst einfach von Bereich zu 
Bereich, bildest die lokalen Werte für Anfang und Ende, beziehst die 
Werte aus der FFT und rechnest dabei die Werte anhand der Brüche 
anteilig rein.

Ich mache sowas beim Audiospektrum im FPGA, geht in Echtzeit, während 
der FFT-Core die Frequenzen liefert.

Beim DSP solltest du aber überlegen, ob eine FFT Sinn macht und ob Du 
nicht lieber eine DFT nur über die relvanten Frequenzen/ 
Frequenzbereiche vollziehst.

Wenn die Terzanalyse Sinn machen soll, musst Du die Feinheit der FFT 
sowieso an der niedrigsten Frequenz / Nachbarfrequenz ausrichten und 
hast ein Minimum für Dein "n". Das wird dann sehr rechenzeitaufwändig. 
Wenn Du die Terzen mit wenigstens 20% Präzision treffen wills, brauchts 
Du > 4096 FFT-Länge@16kHz. Da sind 30+ DFTs u.U. präziser und schneller.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Alternativ hab ich auch schon gesehen, dass solche Analysen einfach als 
eine Gruppe passend konfigurierter Bandfilter mit nachfolgender 
RMS-Bildung durchgeführt werden. Das hat den Vorteil, dass es 
zeitkontinuierlich arbeitet.

Grüße,

Peter

von Dennis J (Gast)


Lesenswert?

Juergen Schuhmacher schrieb:
> Du gehst einfach von Bereich zu
> Bereich, bildest die lokalen Werte für Anfang und Ende, beziehst die
> Werte aus der FFT und rechnest dabei die Werte anhand der Brüche
> anteilig rein.

Das verstehe ich nicht ganz. Was meinst du mit lokalen Werten?

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Bereichsgrenzen der Frequenzen. Du musst ja definieren, welche 
Frequenzen der FFT zu einer bestimmten Terzfrequenz zugeordnen werden 
sollen.

Im Beispiel sieht man eine Zuordnung für 31 Frequenzen, die 
Frequenznummer, den Bereich von/bis und die Nummerd der Frequenzen für 
einen FFT von 32768 @ 96kHz.

Am Besten machst du Dir auch so eine Tabelle, die Dir das ales 
berechnet.


Peter Diener schrieb:
> Alternativ hab ich auch schon gesehen, dass solche Analysen einfach als
> eine Gruppe passend konfigurierter Bandfilter
Das ist ja nichts anderes, als eine DFT mit den selektierten Frequenzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.