Was sind die relativen Vorteile verschiedener Upsampling-Schemata?

12

Kürzlich bin ich auf ein DSP-System gestoßen, das ein internes Upsampling über Zero Padding durchgeführt hat. Als ich das Halten nullter Ordnung erwartete, stellte ich überrascht fest, dass ein Gleichstromsignal keinen Gleichstromausgang erzeugte; Viele Harmonische der internen (niedrigeren) Abtastfrequenz waren auch im Ausgang vorhanden.

Dies führt zu meiner Frage: Welche Upsampling-Techniken werden häufig verwendet und welche relativen Vorzüge haben sie? Warum sollte ich null Auffüllen, null Halten oder erste Halten wählen und welche anderen Techniken sind verfügbar?

Einige Klarstellungen:

  • Das System ist in Echtzeit, daher muss das Upsampling-Schema kausal sein.
  • Auf den Upsampler folgt ein Anti-Aliasing-Filter, der ebenfalls angegeben werden kann.
Nibot
quelle

Antworten:

11

Für die Zwecke dieser Antwort verwende ich die Matlab-Terminologie und definiere "Upsampling" als den Vorgang des Einfügens von Nullen zwischen die Eingangsabtastwerte und "Interpolation" als den kombinierten Vorgang des Upsamplings und Filterns, um die Aliase zu entfernen ( ist der Interpolationsfaktor), den das Upsampling einführt. Eine Erklärung, wie / warum Upsampling Aliase einführt, finden Sie in diesem Thread .m-1m-1m

Es ist wichtig zu verstehen, dass ein beliebiger Tiefpassfilter verwendet werden kann, um die Aliase zu entfernen und somit die Interpolation zu vervollständigen. Einige Filter haben jedoch Vorteile bei der Interpolation. Im Folgenden werden die verschiedenen Arten der Interpolationsfilterung erläutert.

FIR Filter

Interpolierende FIR-Filter sind effizient, da sie Upsampling und Alias-Filterung in einem Schritt kombinieren. Dies ist am einfachsten in einem Beispiel zu sehen. Angenommen, wir haben eine Datensequenz und wollen sie um den Faktor zwei interpolieren. Der erste Schritt ist das Upsampling um den Faktor zwei. Dies ändert die ursprüngliche Datensequenz von zu .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x Nx[n]x0,x1,...xNx0,0,x1,0,...xN

Angenommen, wir haben einen Tiefpass-FIR-Filter, , mit dem wir den Alias ​​entfernen. Wenn wir die aufwärtsgetastete Datensequenz mit dem Filter falten, wird die Hälfte der Filterabgriffe durch die Nicht-Null-Abtastwerte stimuliert, und die Hälfte der Abgriffe ist inaktiv, weil sie den Null-Abtastwerten entsprechen. Die Hälfte, die stimuliert wird, und die Hälfte, die inaktiv ist, wechseln sich ab, während der Filter die Daten durchläuft. Diese zwei Sätze von Abgriffen werden manchmal als Filterphasen bezeichnet.h[n]

Derselbe Effekt kann implizit erzielt werden, indem das Upsampling beseitigt und die ursprüngliche Datensequenz mit einem interpolierenden FIR-Filter gefiltert wird. Das interpolierende FIR-Filter erzeugt Ausgänge für jeden Eingangsabtastwert. Für alle m Ausgänge der Filter auf der gleichen arbeiten c e i l ( K / m ) Eingangsabtastwerte (wobei K die Anzahl von Filterabgriffen und „ceil“ ist die Ceiling - Funktion).mmceichl(K/m)

Ein Beispiel wird hoffentlich veranschaulichen, wie dies funktioniert. Angenommen, wir haben ein Filter mit sechs Abgriffen und interpolieren um den Faktor zwei. Die Filterhähne sind [1 -2 4 4 -2 1]. Wenn wir buchstäblich interpolieren und dann filtern würden, würden sich die Samples und Filter-Taps wie folgt aneinanderreihen (sobald es eine vollständige Überlappung gegeben hätte):

0:1x2:-20:4x1:40:-2x0:1
Nächstes Beispiel ...

x3:10:-2x2:40:4x1:-20:1
Nächstes Beispiel ...

0:1x3:-20:4x2:40:-2x1:1
Und so weiter. Der Punkt des Interpolationsfilters ist, dass es das tatsächliche Einfügen der Nullen überspringt und nur abwechselt, welchen Satz von Abgriffen es gerade verwendet. Somit würde die vorhergehende Sequenz nun wie folgt aussehen:

x2:-2x1:4x0:1

x3:1x2:4x1:-2

x3:-2x2:4x1:1

Null-Order-Hold

m-1x0,x1,...xNx0,x0,x1,x1,...xN,xN

m

First Order Hold

x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

[12112][132312312]

Das Dreiecksfilter besteht aus zwei zusammen gefalteten Rechteckfiltern, die dem im Frequenzbereich quadrierten Sinus entsprechen. Dies ist ein deutlicher Fortschritt gegenüber dem Halten nullter Ordnung, aber immer noch nicht großartig.

IIR Filter

Ich habe noch nie einen interpolierenden IIR-Filter verwendet, daher werde ich nicht viel darüber sagen. Ich gehe davon aus, dass die gleichen Argumente wie bei der regulären Filterung zutreffen. IIR-Filter sind effizienter, können instabil sein, haben keine lineare Phase usw. Ich glaube nicht, dass sie die Upsampling- und Filterungsschritte wie ein FIR-Filter kombinieren können. aber ich könnte mich irren.

FFT-Interpolation

Ich werfe dieses ein, obwohl es nicht sehr häufig vorkommt (natürlich glaube ich auch nicht, dass das Nullhalten häufig vorkommt). Dieser Thread befasst sich mit FFT-Resampling, wobei Resampling sowohl Interpolation als auch Dezimation ist.

Höhere Ordnung hält

Halteinterpolatoren zweiter Ordnung werden üblicherweise als "quadratische Interpolatoren" bezeichnet. Sie sind nicht linear und können daher nicht als FIR-Filter implementiert werden, die linear sind. Ich verstehe die Mathematik hinter ihnen nicht gut, deshalb werde ich ihre Leistung nicht diskutieren. Ich werde jedoch sagen, dass ich glaube, dass sie außerhalb der Signalverarbeitung etwas verbreitet sind.

Es gibt auch Methoden höherer Ordnung (drei oder mehr). Diese werden als "Polynomregressionen" bezeichnet.

BEARBEITEN:

CIC-Filter (Cascade Integrator Comb)

Ich habe vergessen, CIC-Filter zu erwähnen . CIC-Filter werden aus zwei Gründen verwendet: Sie verwenden nur Addierer / Subtrahierer (was angesichts der schnellen und billigen Multiplikatoren nicht mehr so ​​wichtig ist) und sie können sehr effizient große Änderungen der Abtastrate vornehmen. Ihre Kehrseite ist, dass sie im Wesentlichen eine effiziente Implementierung eines kaskadierten Rechteckfilters sind, sodass sie alle oben diskutierten Nachteile von Rechteckfiltern aufweisen. CIC-Interpolatoren geht so gut wie immer ein kompensierendes FIR-Filter voraus, das das Signal vorverzerrt, um die vom CIC eingeführte Verzerrung auszugleichen. Wenn die Änderung der Abtastrate groß genug ist, lohnen sich die Kosten des Vorverzerrungsfilters.

Jim Clay
quelle
Fantastische Umfrage Mr Jim. Ich glaube, dass dies auch als "Polynom-Regression" bezeichnet wird, um es zu Ihrer Kategorie mit übergeordneten Werten hinzuzufügen. Ausgehend von einer bestimmten Menge von Punkten berechnen wir eine Linie, eine Parabel, ein kubisches Polynom höherer Ordnung mit der besten Anpassung. Sobald wir die Gleichung haben, können wir leicht herausfinden, was Zwischenpunkte sind.
Spacey
Fragen: 1) Der letzte Absatz des FIR-Filterteils ist mir nicht ganz klar. Sie haben erwähnt, dass die 2. und 3. Ausgabe, die dem 1. Eingangsabtastwert entsprechen, Filterbänder 1, 4, 7 und dann 2, 5, 8 verwenden. Sie haben jedoch auch erwähnt, dass sie alle Nullen sind ... also nicht die 2. und 3. Ausgabe Samples nur Nullen in diesem Fall? 2) Sieht dieses 'FIR-Interpolationsfilter' wie folgt aus: [1 0 0 3.2 0 0 -2.1 0 0 1.1 0 0] für m = 3? (Zahlen sind erfunden).
Spacey
@Mohammad Ich habe die Antwort bearbeitet. Ich hoffe das hilft. Und danke für die Information über Polynomregressionen.
Jim Clay
1
@endolith Zwei Gründe, denke ich: Komplexität und es macht nur rechnerisch Sinn, wenn die Filterlänge über einer bestimmten Zahl liegt (und ich bin nicht sicher, was diese Zahl ist). Der FFT-Ansatz eignet sich sehr gut für den Umgang mit Probenblöcken. Wenn Sie sich jedoch mit einem Datenstrom aus Proben befassen, müssen Sie auch Überlappungen hinzufügen oder Überlappungen speichern, um die Kontinuität zu gewährleisten.
Jim Clay
1
@endolith Eine wirklich schöne Sache am FFT-Ansatz ist, dass die Verwendung eines großen Filters praktisch keine Kosten verursacht.
Jim Clay
3

Jims Antwort deckt das ziemlich gut ab. Alle Upsampling-Methoden folgen demselben Grundschema:

  1. Einfügen von Nullen zwischen Samples: Dies führt zu einer periodischen Wiederholung des ursprünglichen Spektrums, lässt jedoch das Spektrum im ursprünglichen Band vollständig intakt
  2. Tiefpassfilter, um alle Spiegelspektren zu entfernen

Der Hauptunterschied zwischen den Methoden besteht darin, wie die Tiefpassfilterung implementiert wird. Der ideale Upsampler wäre ein idealer Tiefpassfilter, aber das ist unpraktisch. Wenn Sie das Problem im Frequenzbereich berücksichtigen, können Sie den richtigen Upsampling-Algorithmus für Ihre spezifischen Anforderungen finden:

  1. Wie viel Amplitudenverzerrung kann ich im Originalband tolerieren? Ist diese Frequenz abhängig?
  2. Interessiert mich die Phase in der Originalband? Wenn Sie die Phase aufrechterhalten müssen, benötigen Sie eine lineare Phase FIR. Wenn nicht, ist eine Mindestphase besser geeignet, um "Kausalität" und scharfe Ansätze aufrechtzuerhalten.
  3. Wie viel brauche ich, um die Spiegelbilder zu unterdrücken? Grundsätzlich erscheinen die Spiegelbilder als zusätzliches Rauschen im Basisband.

Nichtlineare Interpolatoren hoher Ordnung (Spline, Hermitian, Lagrange) funktionieren in der Regel nicht gut, da der Interpolationsfehler stark signalabhängig ist und kaum einer bestimmten Anforderung zugeordnet werden kann.

Hilmar
quelle
Was meinen Sie mit "schafft es besser, die Kausalität aufrechtzuerhalten"?
Nibot
0

Bei der Betrachtung des Unterschieds zwischen Sample-and-Hold (dh der Wiederholung von Sample-Werten) und dem Auffüllen mit Nullen ist es hilfreich zu erkennen (wie Jim und Hilmar hervorheben), dass Sample-and-Hold als Upsampling durch Auffüllen mit Nullen gefolgt von einem interpretiert werden kann FIR-Filter, dessen Impulsantwort aus einem Rechteckimpuls besteht.

Zum Beispiel können wir beim Upsampling von 2 kHz auf 64 kHz (Faktor 32) dies implementieren, indem wir 31 Nullen zwischen jedes 2-kHz-Abtastpaar einfügen und dann mit allen anderen durch ein FIR-Filter filtern, das aus 32 Einsen besteht Koeffizienten Null.

sincτ=0

Es stellt sich heraus, dass diese sincFunktion ihre Nullstellen genau bei den Harmonischen der unteren Abtastfrequenz hat. In unserer Beispielanwendung der Aufwärtsabtastung von 2048 Hz auf 65536 Hz hat der Frequenzgang der Abtast- und Halteoperation Nullen bei 2048 Hz, 4096 Hz usw.

Bildbeschreibung hier eingeben

Daraus schließe ich, dass jedes Interpolationsfilter, das die Harmonischen der ursprünglichen Abtastfrequenz vollständig unterdrückt, wie "Sample and Hold" aussieht. Ist das richtig?

1/f

Nibot
quelle
Das Problem ist, dass die Nullen sehr eng sind, so dass die meisten Signale Energie außerhalb der Nullen haben.
Jim Clay
@ JimClay, sind die engen Nullen nicht perfekt, um die Harmonischen der niedrigeren Abtastrate zu eliminieren? Ich stimme zu, Sie möchten auch noch ein paar Pole um 1 kHz, um die Bildfrequenzen loszuwerden. Ich würde wohl meine Frage erweitern: Wie entwirft man einen guten Interpolationsfilter?
Nibot
Sie entwerfen einen Tiefpassfilter, dessen Durchlassbereich die Bandbreite Ihres Signals und dessen Stoppbereich die Aliase enthält, die beim Upsampling eingeführt werden. Die Frequenzen zwischen dem 3dB-Punkt des Signals und dem Alias ​​sind Ihr Übergangsband. Wenn Ihre Frage lautet "Wie entwerfe ich einen Tiefpassfilter?", Stellen Sie diese Frage in einer anderen Frage und wir können sie diskutieren.
Jim Clay
Ich verstehe allgemein, wie man Filter entwirft, indem man normalerweise Pole und Nullen explizit in die S-Domäne einfügt und sie dann in Z-Domänenfilter konvertiert. Ich habe mich gefragt, ob es spezielle Tricks für Interpolationsfilter gibt. Die Botschaft, die ich wegnehme, ist, dass es eigentlich keine Tricks gibt - Interpolationsfilter sind genau wie jede andere Art von Filtern, und ihr Design ist die Wahl eines Kompromisses zwischen den verschiedenen Überlegungen (Welligkeit, Phase, Gruppenverzögerung, minimale Sperrdämpfung, Rechenaufwand usw.).
Nibot
Andererseits weiß ich nichts über das Entwerfen von FIR-Filtern.
Nibot