| X wird als das Resultat der Faltung eines "echten" Profils mit der Impulsantwort-Funktion (Response-Funktion) Rsp angenommen. Eine Dekonvolution wird versucht und in Y gespeichert. Ein Filter Flt wird ebenfalls berechnet. Soll die Entfaltung nicht nur für einen einzigen Vektor durchgeführt werden, so sollte für weitere Vektoren nicht wieder VF_deconvolve aufgerufen werden, sondern VF_filter mit Flt als Filter.
Die Response-Funktion Rsp muß mit dem Nullpunkt beim nullten Element vorliegen. Elemente für positive Zeiten (oder was immer die unabhängige Variable ist) folgen in Rsp1 bis Rspsize/2 und die Elemente für negative Zeiten, beginnend mit der am stärksten negativen Zeit, in Rspsize/2+1 bis Rspsize-1. Um diese Ordnung herzustellen, bediene man sich gegebenenfalls der Funktionen VF_rotate oder VF_reflect.
X, Y, Rsp und Flt müssen alle dieselbe Größe size besitzen; diese muß eine ganzzahlige Potenz von 2 sein. X darf durch Y überschrieben werden und Rsp durch Flt, aber X und Flt sowie Y und Rsp müssen voneinander verschieden sein.
Mathematisch ist Flt der Kehrwert der Fourier-Transformierten von Rsp. Falls die Fourier-Transformierte von Rsp Nullen enthält, bedeutet dies jedoch, daß für die jeweilige Frequenz jegliche Information verloren gegangen ist bei der angenommenen Faltung. Sie kann also nicht durch Entfaltung rekonstruiert werden. Man sollte nur für diejenigen Frequenzen eine Rekonstruktion der ursprünglichen Information versuchen, wo auch noch etwas von ihr übrig ist. Hier ist also einer der seltenen Fälle gegeben, wo an die Stelle einer Division durch 0 sinnvoll eine Multiplikation mit 0 tritt! Um Mißverständnisse zu vermeiden: Ob besagte Information noch vorhanden ist, läßt sich nicht aus dem Eingangsvektor X entnehmen, sondern liegt allein in der angenommenen Response-Funktion begründet.
Man sollte Entfaltung jedenfalls nicht blind anwenden, sondern am besten die Fourier-Transformierte von Rsp inspizieren und danach für die jeweilige Anwendung entscheiden, was zu tun ist. Wen diese Bemerkungen noch nicht von der Verwendung dieser Entfaltungs-Funktion abgeschreckt haben, für den führt VF_deconvolve standardmäßig eine Editierung des Filters durch. Hierbei werden alle Frequenzen mit einem Filterwert unterhalb der durch Rundungsfehler gegebenen Schwelle "verloren gegeben". Anstelle des Inversen von sehr kleinen Werten (was zu OVERFLOW- oder SING-Fehlern führen könnte) wird wie oben beschrieben Null im Filter gespeichert.
Die beschriebene Editierung kann modifiziert und die Editier-Schwelle exakt festgelegt werden mittels der Funktion VF_setRspEdit. Die aktuell eingestellte Schwelle kann durch VF_getRspEdit abgefragt werden.
Diese Entfaltung basiert auf der Annahme, X sei periodisch oder konvergiere zumindest an beiden Enden zu demselben Wert (nulltes und letztes Element identisch). Ist dies nicht der Fall, so sollten Randeffekte mit den bei VF_convolve beschriebenen Methoden vermieden werden.
Bezüglich spezieller Versionen mit den Präfixen VFp_, VFs_ und
VFl_ vergleiche man Kap. 4.8.. |