Forum: Digitale Signalverarbeitung / DSP / Machine Learning Spektrumanalysator DSP Algorithmus


von Christoph M. (mchris)


Lesenswert?

Hat jemand einen Vorschlag für eine Rechenvorschrift abseits einer FFT 
für einen Audiospektrumanalysator?

Ich überlegen, das Signal herunter zu mischen ( sweep ) und dann mit 
einem Bandpass zu filtern.

von Bernd (Gast)


Lesenswert?


von c-hater (Gast)


Lesenswert?

Christoph M. schrieb:

> Hat jemand einen Vorschlag für eine Rechenvorschrift abseits einer FFT
> für einen Audiospektrumanalysator?

Goertzel.

> Ich überlegen, das Signal herunter zu mischen ( sweep )

???

Was genau willst du da mischen? Ich denke, das Ziel beim einem 
Spektrumanalysator ist vielmehr: zu trennen.

> und dann mit
> einem Bandpass zu filtern.

Genau das ist ein Goertzel de facto.

Übrigens: mit dem Goertzel kann man das sogar mit einem ATtiny 
realisieren, der nichtmal in Hardware multiplizieren kann. No need for 
DSP.

Siehe:

Beitrag "Audio Spektrum Analyzer mit ATtiny85"

DSP könnte man aber natürlich brauchen, wenn die Auflösung besser werden 
soll. Oder wenn man mehr Kanäle haben will. Bei Letzterem ist man aber 
dann relativ fix wieder bei der FFT als effizienterer Lösung...

von c-hater (Gast)


Lesenswert?

Bernd schrieb:

> Kaskadierte Halbbandfilter?
> Siehe: Beitrag ""LED-Spectrumanalyzer"software ohne Fouriertransformation"

Das ist nur die halbe Lösung. Was da rauskommt, ist ziemlich unbrauchbar 
als Audio-Spektrumanalysator.

Selbst wenn der HB-Filter deutlich besser wäre...

von J. S. (engineer) Benutzerseite


Lesenswert?

c-hater schrieb:
> Goertzel.

Ja und zwar mit jeweils optimierten Frequenzen maximal in Terzabstand.
FFT müsste es sehr hoch aufgelöst sein, um unten noch gut abzubilden.

Was so einigermassen ginge, sind 4-5 Frequenzen pro Oktave und daran 
angeschlossen eine HBF-Kaskade nach unten.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Man kann die kaskadierten Halbbandfilter auch noch weiter aufbohren: Bei 
dem Beispiel von mir mit dem Atmega kommt ja am Ausgang jedes Hochpasses 
direkt die Pegelauswertung. Da koennte man z.b. noch jeweils eine(oder 3 
oder 7 oder 15 oder ...) weitere HP/TP Kombi(s) reinbauen, um die 
detektierten Frequenzbereiche weiter aufzufieseln.
Vorteil auch hier: alle Filter bleiben voellig identisch.
Also z.b. bisher:

16k-8k -> zur Pegelbestimmung/Display
8k-0k -> auf die naechste HP/TP Kombi

Jetzt neu:
16k-8k -> aufsplitten in 16k-12k und 12k-8k, dann erst Pegel bestimmen.
8k-0k -> auf die naechste HP/TP Kombi

Gruss
WK

von c-hater (Gast)


Lesenswert?

Dergute W. schrieb:

> Man kann die kaskadierten Halbbandfilter auch noch weiter aufbohren: Bei
> dem Beispiel von mir mit dem Atmega kommt ja am Ausgang jedes Hochpasses
> direkt die Pegelauswertung. Da koennte man z.b. noch jeweils eine(oder 3
> oder 7 oder 15 oder ...) weitere HP/TP Kombi(s) reinbauen, um die
> detektierten Frequenzbereiche weiter aufzufieseln.
> Vorteil auch hier: alle Filter bleiben voellig identisch.

Das ist ein verdammt umständlicher Weg, um letztlich wieder eine FFT zu 
bauen (wenn auch ohne das erste "F")...

Genau darauf läuft dein Konzept nämlich hinaus. Von der Wirkung (im 
Vollausbau) exakt wie eine Radix2-FFT, bloß rechenzeitbedarfsmäßig ganz 
erheblich schlechter als eine solche, denn die nutzt die algorithmischen 
Redundanzen, die sich bei deinem Ansatz zwangsläufig ergeben, von 
vornherein dazu, um eben Rechenzeit zu sparen. Man könnte sogar glatt 
ausrechnen, wann dein Konzept im Vergleich zur FFT den "break even" 
erreicht. Du wirst dich erschrecken, wie schnell das geht...

Und übrigens: es ist nicht Ziel der Signalverarbeitung, mit möglichst 
wenig verschiedenen Filtern auszukommen, sondern typisch eher: die 
Aufgabe mit der verfügbaren Rechenleistung bestmöglich zu lösen. Wenn 
die bestmögliche Lösung zwei, drei oder vier verschiedene Filter 
erfordert, dann isses eben so.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ja, wenn du meinst...
Nachdem ich ja nicht fuer jedes kaskadierte Halbbandfilter irgendwelche 
Tantiemen krieg, ist's mir eigentlich eher wurscht, wenn's irgendwer aus 
irgendwelchen Gruenden nicht einsetzen mag.

Gruss
wK

von c-hater (Gast)


Lesenswert?

Dergute W. schrieb:

> Nachdem ich ja nicht fuer jedes kaskadierte Halbbandfilter irgendwelche
> Tantiemen krieg, ist's mir eigentlich eher wurscht, wenn's irgendwer aus
> irgendwelchen Gruenden nicht einsetzen mag.

Auch wenn du es offensichtlich nicht wirklich verstanden hast: auch eine 
Radix2-FFT besteht letztlich aus vielen kaskadierten HB-Filtern, sogar 
welchen ziemlich exakt deiner Bauart. Sie benutzt sie nur viel 
effizienter als du das tust...

Im Übrigen kannst du mich sowieso nicht meinen. Ich hab' doch im meiner 
ATtiny-Lösung auch kaskadierte Halbbandfilter verwendet (nur halt einen 
besseren als deinen).

Ich war mir aber obendrein auch nicht zu schade, zusätzlich Goertzels zu 
verwenden. Bei geeigneter Verwendung waren die schlicht sehr billig, 
aber trotzdem sehr wirkungsvoll. Sehr viel wirkungsvoller als 
zweckentfremdete Halbbandfilter...

Genau das ist, was ich mit meiner Darstellung des Zwecks und der 
typischen Herangehensweise bei der Signalverarbeitung ausdrücken wollte. 
Quasi-religiöses Schmalspurdenken führt hier (wie sonst auch) eher nicht 
zum optimalen Ergebnis...

von Egon D. (Gast)


Lesenswert?

c-hater schrieb:

> Man könnte sogar glatt ausrechnen, wann dein Konzept
> im Vergleich zur FFT den "break even" erreicht.

Hic rhodus, hic salta.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ein Vorteil der (Halbband)filterkaskaden ist die niedrige Rechenleistung 
bei grossen Frequenzverhaeltnissen; wenn also das hoechste und tiefste 
Frequenzband, das einen interessiert, sehr weit auseinander ist und wenn 
einen auch eher die Baender in einem logarithmischen Massstab und nicht 
in einem linearen Massstab interessieren. Was bei Audio oft der Fall 
ist.

Wenn z.B. eine Hoch/Tiefpasskombi bei der vollen Abtastfrequenz den 
Rechenaufwand 1 pommes/quadratbratwurst braucht, braucht die gesamte 
Filterkaskade (bei Oktavausgaengen) immer etwas unter 2 
pommes/quadratbratwurst.
Und zwar voellig wurscht, ob ich ueber 10 Oktaven analysiere, oder ueber 
100 Oktaven. Das sieht bei Fourier oder Goertzel dann etwas anders aus.

Auch wenn ich sage, Oktavabstaende sind mir zu grob, also haeng ich an 
jeden Hochpassausgang der Originalkaskade noch eine HP/TP-Kombi, damit 
ich 2 Messwerte pro Oktave erhalte, dann steigt der Aufwand niemals 
ueber eine bestimmte Grenze. Hier waeren es dann 3 
pommes/quadratbratwurst. Also ziemlich uebersichtlich.

Gruss
WK

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.