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).mmc e i l ( 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
[ 121 12][ 13231 2312]
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.
Jims Antwort deckt das ziemlich gut ab. Alle Upsampling-Methoden folgen demselben Grundschema:
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:
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.
quelle
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
Es stellt sich heraus, dass diese
sinc
Funktion 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.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?
quelle