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.