mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Signal upsampeln vor FIR-Filterung oder nicht?


Autor: Signalverarbeitendes Gewerbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht um die Filterung von z.B. den 32 letzten, zurückliegenden Werten 
mit einem FIR-Filter. Normal würde ich mit 32 Koeffizienten arbeiten und 
32 TAPs. Nun gibt es Aussagen, daß man zu genaueren Werten gelangt, wenn 
man zuerst hochsampelt und dann den Filter anwendet. Z.B. mit der 
4-fachen Auflösung. Ist es grundsätzlich möglich, da was rauszuholen? 
Ich meine doch nicht, oder?

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Was erhofft sich denn der Aussagengeber denn da herauszuholen? Wie 
sollen denn Werte "genauer" sein als sie sind?

Gruss
WK

Autor: Signalverarbeitendes Gewerbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das genau ist die Frage. In welchen Fällen könnte das etwas bringen?

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Was sollte es den "bringen"? Und wer sagt sowas aus? Da wuerd' ich 
nachfragen...

Gruss
WK

Edit: Kommt mir so vor, wie bei dem Kraeuterlikoer: "Man sagt, er habe 
magische Kraefte". Tja. Wer sagt das? Die Marketingabteilung. Achso. Und 
was fuer Kraefte? Magische? Je mehr ich davon trinke, desto 
schwindeliger wird mir? Sehr magisch...

: Bearbeitet durch User
Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Signalverarbeitendes Gewerbe schrieb:
> Nun gibt es Aussagen, daß man zu genaueren Werten gelangt, wenn
> man zuerst hochsampelt und dann den Filter anwendet. Z.B. mit der
> 4-fachen Auflösung.

Hier werden meines Erachtens verschiedene Dinge durcheinander geworfen.

Upsampling ("hochsamplen") bezieht sich auf die Abtastrate, also 
wieviele Samples pro Zeiteinheit man hat. Durch Interpolation kann man 
diesen Wert erhöhen oder auch verringern (Downsampling).

Auflösung bezieht sich auf die Quantisierung des Signals.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Signalverarbeitendes Gewerbe schrieb:
> Das genau ist die Frage. In welchen Fällen könnte das etwas bringen?

Da in dem primären Signal durch das Hochsampeln keine relevanten 
Informationen hinzukommen (und wenn, dann Willkürliche) kann es für das 
Signal selber nichts bringen. Notwendig ist das nur, wenn man das Signal 
auf andere Abtastraten wandeln will oder aufwändig weiterprozessiert. 
Beim Audio macht man das gerne mal, weil die Filter auf höheren Raten 
feiner aufgelöst sind, was z.B. die Filtergüte angeht. Es kommen weniger 
zusätzliche Effekte rein, weil heissen, das Signal wird durch das 
genauer aufgelöste Prozessieren weniger stark weiterverschlechtert.

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was sollte es den "bringen"? Und wer sagt sowas aus? Da wuerd' ich
>nachfragen...

Ich denke, ein einfaches Beispiel kann die Sache verdeutlichen.
Nehmen wir z.B. einen den idealen Tiefpass angenäherten, zeitbegrenzten 
FIR-SINC-Filter:
https://en.wikipedia.org/wiki/Sinc_filter

Wenn man das Signal vor dem Filter "upsampled" als Nullen zwischen den 
Abtastwerten einfügt, erhält man nach dem Filter an den Stellen der 
Nullen die interpolierten Abtastwerte. Diese können auch eine feinere 
Quantisierung als die Abtastwerte haben, da der Filter das 
Quantisierungsrauschen minimiert.
Insofern kann man auch sagen, dass die Werte nach dem Filter genauer 
sind, weil das Quantisierungsrauschen gefiltert wurde.

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

chris_ schrieb:
> Diese können auch eine feinere
> Quantisierung als die Abtastwerte haben, da der Filter das
> Quantisierungsrauschen minimiert.

Hm... Wieso sollte das Filter das Quantisierungrauschen minimieren? 
Klar, wenn ein Filter bestimmte Frequenzbereiche daempft, dann wird's 
auch das Rauschen darin daempfen. Aber mehr nicht.

Eine feinere Quantisierung ist notwendig, wenn das Signal nicht (zu 
sehr) durch's upsamplen verschlechtert werden soll.
Wenn ich so eine Folge [... 0 1 0 1 0 ...] um den Faktor 2 upsample, 
dann sollte am Ausgang ja ungefaehr sowas rauskommen: [ ... 0  0.5  1 
0.5  0  0.5  1...] Also schon mal 1 bit mehr Quantisierung. Aber 
wirklich "besser" wird ein Signal durch so Gewurschtel eigentlich nicht.

Gruss
WK

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hm... Wieso sollte das Filter das Quantisierungrauschen minimieren?

http://www.embedded.com/design/real-time-and-perfo...

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich so eine Folge [... 0 1 0 1 0 ...] um den Faktor 2 upsample,
>dann sollte am Ausgang ja ungefaehr sowas rauskommen: [ ... 0  0.5  1
>0.5  0  0.5  1...] Also schon mal 1 bit mehr Quantisierung. Aber
>wirklich "besser" wird ein Signal durch so Gewurschtel eigentlich nicht.

Vielleicht ein anderes Beispiel: Nulldurchgangsbestimmung

Versuche das Verfahren mal bei dieser Folge:
 [... -1 1 -1 1 -1 ...]

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Moin,

chris_ schrieb:
>>Hm... Wieso sollte das Filter das Quantisierungrauschen
> minimieren?
>
> http://www.embedded.com/design/real-time-and-perfo...

Ja, das ist ein alter Hut - ich schrub ja: Klar, wenn ein Filter 
bestimmte Frequenzbereiche daempft, dann wird's auch das Rauschen darin 
daempfen. Aber mehr nicht.
Dazu brauch ich das Signal ja schon ueberabgetastet; der Threadersteller 
wollte ja sein "normal" abgetastetes Signal hochinterpolieren...

chris_ schrieb:
> Versuche das Verfahren mal bei dieser Folge:
>  [... -1 1 -1 1 -1 ...]

Kann ich machen, hilft aber auch nix. Wie bei meinem Signalbeispiel: 
Vorher brauch ich 1 bit/sample, hinterher 2 bit/sample (na, gut - 
eigentlich nur 1.585 bit). Also hat sich die benoetigte Bitbreite/Sample 
durch die Interpolation vergroessert - wenn ich das ignoriere, krieg ich 
eher mehr Rauschen rein als weniger.

Gruss
WK

Autor: Sampleexperte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sagen, es kommt auf den FIR-filter an, ob das vorherige 
samplen was bringt, sage ich mal.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
chris_ schrieb:
> Wenn man das Signal vor dem Filter "upsampled" als(o) Nullen
> zwischen den Abtastwerten einfügt, erhält man nach dem Filter an den
> Stellen der Nullen die interpolierten Abtastwerte.
Das ist schon mal ein Denkfehler, weil das nur theorettisch ohne 
negative Artefakte funktioniert. Je nachdem, wie der Filter konzipiert 
ist, konkret, wie lange er ist, bekommt man damit alles andere, als 
interpolierte Werte. Das Thema hatten wir an anderer Stelle kürzlich 
schon einmal.

> Diese können auch eine feinere
> Quantisierung als die Abtastwerte haben, da der Filter das
> Quantisierungsrauschen minimiert.

Das ändert aber nichts daran, dass die Samples, die Ursprung des Signals 
sind und die die gesamte Information tragen, nicht besser werden. Wenn 
man das wieder runtersampelt bekommt man hingegen mitunter falsche Werte 
infolge der ungewollten Filterfehler.

> Insofern kann man auch sagen, dass die Werte nach dem Filter genauer
> sind, weil das Quantisierungsrauschen gefiltert wurde.

Das stimmt nur im Hinblick auf die spätere Rekonstruktion, wenn das 
höherfrequente Signal wieder in ein Analoges verwandelt wird und auch 
nur dann, wenn man ein reales Rekofilter veranschlagt. Theoretisch ist 
es auch mit dem nicht hochgesampelten Datenstrom möglich, diesen im 
Rahmen seiner Genauigkeit = Informationsgehaltes optimal zu 
rekonstruieren.

Auf höheren Sampleraten ist es allerdings mitunter technisch einfacher.

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. (engineer) Benutzerseite
>chris_ schrieb:
>> Wenn man das Signal vor dem Filter "upsampled" als(o) Nullen
>> zwischen den Abtastwerten einfügt, erhält man nach dem Filter an den
>> Stellen der Nullen die interpolierten Abtastwerte.
>Das ist schon mal ein Denkfehler, weil das nur theorettisch ohne
>negative Artefakte funktioniert. Je nachdem, wie der Filter konzipiert
>ist, konkret, wie lange er ist, bekommt man damit alles andere, als
>interpolierte Werte.

Hmm, Denkfehler ... ich versuche jetzt mal Deine Aussage genauer zu 
verstehen ..

Untersuchen wir dazu die Begriffsbeschreibung zur Interpolation aus der 
Wikipedia ( https://de.wikipedia.org/wiki/Interpolation_(Mathematik) )
"Die Interpolation ist eine Art der Approximation: Die betrachtete Funktion wird durch die Interpolationsfunktion in den Stützstellen exakt wiedergegeben und in den restlichen Punkten immerhin näherungsweise. Die Approximationsgüte hängt vom Ansatz ab." 

Du scheinst davon auszugehen, dass eine Interpolation immer die exakten 
Werte zwischen denn Stützstellen ergibt. Nur so mach Dein Satz oben 
Sinn.
Das ist falsch. Es gibt viele verschiedene Arten der Interpolation. In 
der Meßtechnik werden diese zur Schätzung von Zwischenwerten verwendet. 
Das Ergebnis der Schätzung hängt vom Verfahren ab und kann sich je 
nachdem stark unterscheiden. Upsampling ist eine Form der Interpolation.

Am besten ist es, wenn Du Dir den Wikipedia Artikel zu Interpolation 
genau durchliest. In diesem Dokument sind die Ergebnisse verschiedener 
Interpolationsverfahren auf Seite 63 dargestellt:
https://tu-dresden.de/bu/umwelt/hydro/iak/ressourc...

Vielleicht kannst Du ja noch ein paar Übungen dazu im Netz finden, um 
das Wissen etwas zu festigen.

In der Praxis wird eine Kombination der Interpolation mittels 
"Upsampling" und linearer Interpolation zur hoch genauen Schätzung der 
TOF in Sensoren verwendet.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> Du scheinst davon auszugehen, dass eine Interpolation immer die exakten
> Werte zwischen denn Stützstellen ergibt.

Nein, Ich meinte sinngemäß eher das Gegenteil, weil nur bei einem 
idealen Filter eine solche Interpolation der Zwischenwerte korrekt 
gelingt, den es aber nicht gibt.

Daher ist es ja - je nach angewendetem Verfahren - ein Unterschied, wie 
man beim upsampeln die Zwischenwerte ersetzt. Das oftmals verwendete 
Einfügen von Nullen ist zwar formal korrekt, führt aber zu anderen 
Ergebnissen, als das Einfügen von Mittelwerten o.a., weil dies eine 
andere Interpolation darstellt und jede anders funktioniert, wie Du 
selber sagst.

Das ist aber nicht genau das Thema, das hier behandelt wird. Dem TE ging 
es um die Frage, ob das alleinige upsamlen das Quantisierungsrauschen 
vermindern kann und dies kann es insofern nicht, als dass die 
Quantisierung bereits erfolgt ist und der damit erzielte Fehler im 
Signal verbleibt, da sich an diesen Werten - genauer an der Qualität 
ihrer Aussage - nichts ändert.

Es macht insofern natürlich einen Unterschied, als dass bei der 
Wiedergabe / der Betrachtung im kontinuierliche Bereich dann eine 
Verbesserung der Signalqualität zu erzielen wäre, wenn die neue hohe 
Abtastrate im System auch beibehalten wird, weil dann eine genauere 
Steuerung eines Rekonstruktionsfilters erfolgen kann. Das hat aber mehr 
mit der weiteren Verarbeitung und Ausgabe zu tun.

In der digitalen Domäne bringt das zunächst keinen Vorteil und 
impliziert im Gegenteil, dass er bei seinem Filter die Anzahl der 
Filter-Taps verdoppeln müsste, um die gleiche Perdiodenlänge zu 
überdecken. Der Umstieg auf höhere Raten zieht also Aufwand nach sich.

Es kommt letztlich darauf an, was man vergleichen will.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In der Praxis wird eine Kombination der Interpolation mittels
>"Upsampling" und linearer Interpolation zur hoch genauen Schätzung der
>TOF in Sensoren verwendet.

Bei so ziemlich jeder Anwendung, bei der es um die Gewinnung von 
interpolierten Zwischenergebnissen geht, muss man in irgendeiner Weise 
hochsampeln, weil man ja die Zwischenzeitpunkte haben möchte. Ob dabei 
im konkreten Fall eine lineare Interpolation der Weißheit letzter 
Schluss ist, lasse Ich mal offen. Das wäre an anderer Stelle zu 
erörtern.

Hierbei geht es ja um ein völlig anderes Ziel, nämlich um eine 
Interpolation mit dem Ziel der Ermittlung von Nulldurchgängen.

Hier wird also nicht etwa Rauschen beseitigt, wie der TE es will und 
dabei eine Interpolation als Mittel benutzt, sondern es wird gezielt 
eine Interpolation angestrebt, um neue Ergebnisse zu gewinnen.

Diese Interpolation kann - das ist richtig - durch eine Filterung in 
Echtzeit geschehen (abseits einer rein mathematischen Betrachtung, die 
einen virtuellen Zwischenzeitpunkt anvisiert), aber auch in diesem Fall 
wird kein Rauschen beseitigt.

> Am besten ist es, wenn Du Dir den Wikipedia Artikel zu Interpolation
> genau durchliest.
Die Thematik habe Ich in meinem Beitrag zur DDS an beiden Stellen 
beleuchtet:
Digitale Interpolation bei DA-Wandlung
Beitrag "Re: Universell programmierbarer DDS-Funktionsgenerator"

Zum einen finden wir dort die Methode der Interpolation der Tabelle 
durch Mehrfachabtastung und späteren Filterung und zum anderen die 
Reduktion des Quantisierungsrauschens durch Dithering, welche deshalb 
funktioniert, weil zuvor genauere Zielwerte ermittelt wurden.

Ansonsten hier:

http://www.96khz.org/oldpages/limitsofdds.htm
http://www.96khz.org/oldpages/soundsynthesiswithdds.htm

Eine Reduktion der Quantisierung des Signals im Sinne des TEs ist das 
aber hier nicht wirklich, weil bezüglich der stattfindenden 
Interpolation eine Annahme über deren Oberwellengehalt gemacht wird- 
nämlich, dass es keine gibt! Dadurch - und nur dadurch - kann ein Filter 
definiert werden, welcher die Ecken in der Tabelle reduziert, welche im 
Falle krummer Frequenzen zu einem zusätzlichen Rauschen führen würden.

Für den allgemeinen Fall eines irgendwie zusammengesetzten Signals, 
welches der TE einem Filter zuführen möchte, gelingt dies nicht!

Es lohnt also, etwas über die Texte in der Wikipedia hinaus zu denken 
und genauer hinzuschauen, was da im Detail passiert.

Final bleibt zu bemerken, dass der Wiki-Text so auch nicht 
uneingeschränkt stimmt, denn ein Filter, der so agiert, wie der FIR der 
TE, wird nicht nur die Zwischenwerte bestimmen, sondern auch die 
Stützstellen verändern, was allerdings nicht zwangsläufig nachteilig 
ist.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.