Forum: Digitale Signalverarbeitung / DSP / Machine Learning antialiasing filter


von schnudl (Gast)


Lesenswert?

Ich möchte mit einem dsPIC ein Audiosignal verarbeiten. Dazu denke ich, 
dass eine Bandbreite von 10kHz und somit 20kHz Abtastrate ausreicht. Nun 
müsste ich dazu ein Antialising Filter bauen, da im Audiosignal 
vermutlich Frequenzen bis etwa 20KHz drin sind. Reicht für meine 
Bastelei nun ein einfaches Filter erster Ordnung? Oder sollte das schon 
eines mit höherer Flankensteilheit sein? Wie kann ich praktisch 
abschäzen, wie sich eine unzureichende Flankensteilheit auf meine 
Abtastwerte auswirkt. Gibt es hier eine "Fausregel" ? Oder brauceh ich 
vielleicht gar kein Filter, da die Anteile im Audiosignal ohnehin gering 
sind?

von Gerhard (Gast)


Lesenswert?

Hallo

das kommt darauf an, was du mit dem digitalisierten Signal anfangen 
willst. Wenn daraus eine FFT werden soll, gibts halt "falsche" 
Informationen in deiner FFT. Was willst du denn mit den Daten anfangen ?

Gerhard

von schnudl (Gast)


Lesenswert?

Ich möchte die Funktionen zur digitalen Filterung ausprobieren, aber 
auch hören, wie es akkustisch wirkt.

Es ist nur Spielerei um den dsPIC kennenzulernen. Das digitale Signal 
möchte ich dann über I²S rückwandeln.

von HildeK (Gast)


Lesenswert?

Alle Signalanteile, die nach der Filterung noch oberhalb der halben 
Abtastfrequenz drin sind, spiegeln sich um die halbe Abtastfrequenz nach 
unten. In deinem Beispiel werden 12kHz zu 8kHz, 15 kHz zu 5 kHz. Lästig 
sind z.B. Reste des Stereo-Pilottones (19kHz), der dann auf 1kHz 
gespiegelt wird.

Richtigerweise sollten alle Signale oberhalb der halben Abtastfrequenz 
mindestens um soviel gedämpft sein, wie du mit dem AD-Wandler an S/N 
schaffst. S/N ist ca. 6dB/Bit.
Also: bei 10 Bit Wandler sollten die Frequenzen um ca. 60 dB gedämpft 
sein. Man kann natürlich auch berücksichtigen, dass die Pegel im 
Audiobereich bei natürlichen Signalen (nicht Synthesizer) schon deutlich 
kleinere Pegel als im Bassbereich haben.
Für deine Spielerein kannst du natürlich großzügig sein und ev. eine 
Signalquelle nehmen, die schon vorfiltert, wie z.B. den 
Höhen-Klangregler am Audioverstärker.

von Entwickler (Gast)


Lesenswert?

Ich täte mal ohne Filter anfangen, um zu "sehen" wie Aliasingeffekt 
klingen. Tatsächlich sind ja die hochfrequenten Anteile in Deinem Signal 
nicht so stark vertreten, wie die niederfrequenten.

Ja nach Wortbreite Deines ADC muss der Tiefpass unterschiedlich steil 
ausgelegt werden. Ich sage jetzt mal vorsichtig, das verhält sich 
proportional zur Wortbreite. Rein theoretisch muss bei Abtastfrequenz/2 
das Signal auf Bitzahl x 6dB abgeschwächt werden. Man braucht also sehr 
schnell sehr steile Filter. Je nach Auslegung wird auch mehr oder 
weniger der Nutzbandbreite beschnitten.

Für "ernsthafte Spielerei" würde ich zumindest ein aktives Filter 2. 
Ordnung vorsehen, das mit Tschebyscheff-Characteristik dimensioniert 
ist: Etwas Welligkeit im Durchlassbreich, aber steiler Abfall im 
Sperrbereich.

Wie ein Filter 1. Ordnung klingen wird, kann ich nicht sagen. Probier's 
einfach aus.

von HildeK (Gast)


Lesenswert?

>Wie ein Filter 1. Ordnung klingen wird, kann ich nicht sagen. Probier's
>einfach aus.
Der Unterschied zu gar keinem Filter dürfte minimal sein ... :-)

von Entwickler (Gast)


Lesenswert?

Jo. Ungefähr so wie ein Höhenregler :) Trotzdem kann man sich ja mit der 
Eckfrequenz spielen. In der Tat wäre ich auch zu faul, nur zum Probieren 
hier gross nen Filter zu dimensionieren. Man ist ja kompromissfähig.

von schnudl (Gast)


Lesenswert?

Vielen Dank, ich kenn mich nun aus.

Ich werde einfach einen SC Filter von Maxim nehmen, die sind zwar nicht 
ganz billig, aber haben den Vorteil, dass sie mit der Clock 
durchstimmbar sind. Würdet ihr sowas empfehlen? Ich nehme mal an, dass 
ich die Reste der Clock am Ausgang nicht mehr spüren werde.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das Filter muss nicht besonders steil sein wenn du die Abtastfrequenz 
großzügiger dimensionierst. Zum Beispiel 40 kHz statt 20 kHz. Das 
reduziert die Anforderungen an das Filter enorm, und um dann die 
Abtastrate zur einfacheren Weiterverarbeitung wieder zu reduzieren 
reicht ein relativ einfaches Digitalfilter.

von Mike C. (Firma: Arbeitslos) (mikecontroller)


Lesenswert?

Ich löse es derzeit so das ich ein digitales Signal filtere für eine 
Unterabtastung. Dadurch erhalte z.B. ein Signal mit 48k Messwerten das 
keine Frequenzen größer als meine halbe Unterabtastfrequenz hat.

Weil das Signal aber beschleunigt ist, setze ich jetzt die Abtastwerte 
um!!!! Als hätte ich äquidistant zum beschleunigten Signal 
digitalisiert. Stellt euch eine Welle vor die sich beschleunigt dreht. 
Jeder Messwert ist jetzt auf den Winkel der Welle definiert. Also eine 
gleiche Abtastung pro Winkel, statt wie üblich über die Zeit.

Ich habe genausoviele Stützstellen wie ich das gefilterte Zeitsignal 
hätte unterabtasten können (hab ich ja nicht).

Das Abtasttheorem geht davon aus das man konstant abtastet. Der Filter 
geht auch davon aus das ich konstant abtaste. Das signal war aber nicht 
konstant!!! Durch die Verschiebung habe ich es erst konstant gemacht.

Hab ich gegen das Abtasttheorem verstoßen? Warum funktioniert das? (Das 
ganze heißt nämlich Ordertracking.)


PS: Hier ist das Abtasttheorem definiert:
http://mfb.informatik.uni-tuebingen.de/book/node182.html
den Beweis hab ich verstanden (einigermaßen). Aber wie kann ich beweisen 
das das auch geht in meinem Fall.

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.