Schnelle Faltung

Schnelle Faltung

Die Schnelle Faltung ist ein Algorithmus zur Berechnung der diskreten, aperiodischen Faltungsoperation mit Hilfe der schnellen Fourier-Transformation (FFT). Dabei wird die rechenintensive aperiodische Faltungsoperation im Zeitbereich durch eine wesentlich einfachere, funktionell gleichwertige, Multiplikation im Frequenzbereich ersetzt. Anwendung findet die schnelle Faltung im Bereich der digitalen Signalverarbeitung u.a. bei nicht rekursiven digitalen Filtern (FIR-Filter) zur Reduktion des Berechnungsaufwandes.

Inhaltsverzeichnis

Von der diskreten Faltung zur schnellen diskreten Faltung

Im Zeitbereich ist die diskrete Faltung definiert als:

 h(n) = (f * g)(n) = \sum_{k} f(k) \cdot g(n-k)

Wird die diskrete Faltung in den Frequenzbereich diskret fourier-transformiert, ergibt sich folgender Term:

 H(N) = \mathcal{F}(h(n)) = \mathcal{F}(f(n)) \cdot \mathcal{F}(g(n))

H(N) wird berechnet und anschließend in den Zeitbereich zurücktransformiert, es ergibt sich die gesuchte Funktion:

 h(n) = \mathcal{F}^{-1}(H(N)) = (f * g)(n).

Anwendung

Die Anwendungsbereiche der schnellen Faltung umfassen primär Filteranwendungen im Bereich nicht rekursiver Filter (FIR-Filter). Die dabei eingesetzten Verfahren nennen sich Overlap-Save-Verfahren und Overlap-Add-Verfahren. Da es sich bei der schnellen Faltung mittels FFT und deren Zusammenfassen der Daten in Blöcke um eine zyklische Faltung handelt, anderseits aber FIR-Filter mit der aperiodischen Faltung im Zeitbereich arbeiten, sind zur Gleichstellung der periodischen mit der aperiodischen Faltung Verfahren nötig, um die Daten in den Überlappungsbereiche zwischen den Datenblöcken zu „korrigieren“. Daraus leitet sich der Name Overlap in den Verfahren zur schnellen Faltung ab.

Überlappungsfehler

Im Folgenden wird auf den Effekt der Überlappung bei der schnellen (zyklische-) Faltung eingegangen, und in welchen Fällen das Resultat h[n] identisch ist zur diskreten linearen Faltung.

Wird die Eingangsfolge f[n] der Länge K mit der Impulsantwort g[n] der Länge G gefaltet, ergeben sich bei der linearen Faltung N = K + G − 1 Ausgangswerte h[n].

Um die zyklische Faltung über die DFT überhaupt durchführen zu können, müssen Eingangssequenz und Impulsantwort gleich lang sein. Ist dies nicht gegeben, muss der kürzere Vektor durch Anfügen von Nullen ausgeglichen werden (zero-padding).

Zur Vereinfachung der folgenden Betrachtung nehmen wir an die Impulsantwort g[n] sei kürzer als die Eingangsfolge f[n] (G < K).

Da die Rücktransformation mittels IFFT aus dem Spektrum in diesem Fall als Faltungsprodukt anstelle von N = K + G − 1 ebenfalls nur K Samples liefert (siehe Eigenschaften der DFT), ergibt sich in der Ausgangsfolge ein Überlappungsfehler an den ersten G − 1 Stellen. Zudem ist sie um G − 1 zu kurz, da sich die fehlenden Werte zu den ersten hinzuaddieren. Der Fehler lässt sich durch Anfügen von mindestens G − 1 Nullen an f[n] und K − 1 Nullen an g[n] korrigieren (zusätzliche Nullen am Ende stören den DFT-Algorithmus nicht, wenn die Länge eine Zweierpotenz ist, arbeiten manche FFT-Implementierungen wesentlich effizienter).

Mithilfe des Zero-Padding haben beide Vektoren nun N = K + G − 1 Elemente, das Ergebnis h[n] der schnellen Faltung liefert ebenfalls N = K + G − 1 Werte. Wie bei der linearen Faltung tritt kein Überlappungsfehler mehr auf.

Vorteile

Der Einsatz der schnellen Faltung mit Hilfe der FFT führt zu einer Reduktion des Rechenaufwandes, sodass dieser für jeden Wert (jedes Sample) nicht mehr proportional von der Länge (Anzahl der Werte) K der Funktion g(k) abhängt, sondern nur noch logarithmisch von der gewählten Blockgröße N, mit der Randbedingung, dass N größer als K sein muss, mit der die FFT durchgeführt wird.

Für eine Menge von N Werten (Samples) ergeben sich folgende Komplexitäten (gemessen als Anzahl arithmetischer Grundoperationen wie Additionen und Multiplikationen):

  • diskrete Faltung
 O(N \cdot K)
  • schnelle diskrete Faltung
 O(N \cdot \mathrm{log}(N)), falls N > K.

Praktisch realisierte FIR-Filter sind ab einer Ordnung von ca. 20 bis 40 mittels der schnellen Faltung meist effizienter als in der direkten Form zu implementieren.

Nachteile

Ein Problem der schnellen diskreten Faltung ist ihre Latenz, die durch das Warten auf eine der Blockgröße N entsprechenden Menge an Werten (Samples) zur Berechnung der schnellen diskreten Faltung verursacht wird:

Die Blockgröße muss mindestens der Länge des Signals im Zeitbereich, mit dem die Funktion gefaltet werden soll, entsprechen, da sonst das Ergebnis kürzer als die Impulsantwort der Faltung wäre. Zudem muss bei Verwendung des Overlap-Add- oder Overlap-Save-Verfahrens, wenn die Entstehung von Artefakten durch das Verfahren gänzlich vermieden werden soll, diese minimale Blocklänge zusätzlich um den Abstand der einzelnen Pakete, in denen die Faltung vorgenommen werden soll, verlängert werden – weswegen große Blocklängen tendenziell eher Ergebnisse mit einer höheren Effizienz liefern. Weiterhin kann je nach konkreter FFT-Implementierung noch die Bedingung existieren, dass die Blockgröße N einer ganzzahligen Potenz von 2, 4 oder 8 entsprechen muss – was zusammen am Ende unter Umständen zu einer sehr hohen Blockgröße N führen kann.

Ein weiterer Nachteil ist das schwerer zu kalkulierende Quantisierungsrauschen über die gesamte Faltungsoperation. Dieses ist bei der schnellen Faltung tendenziell höher als bei der diskreten Faltung. Das Problem des Quantisierungsrauschens ist vor allem bei Signalprozessoren mit Festkommaarithmetik zu beachten.

Literatur

  • Karl-Dirk Kammeyer: Digitale Signalverarbeitung. 6. Auflage. Teubner, 2006, ISBN 3-8351-0072-6, S. 248–260.
  • Steven W. Smith, Ph.D.: The Scientist and Engineer’s Guide to Digital Signal Processing. 1. Auflage. Elsevier Ltd, Oxford 2002, ISBN 978-0750674447, 18. Kapitel (dspguide.com).

Einzelnachweise


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Faltung (Mathematik) — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung, auch Konvolution (von lat. convolvere, „zusammenrollen“), einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Anschaulich… …   Deutsch Wikipedia

  • Schnelle Fourier-Transformation — Eine schnelle Fourier Transformation (englisch fast Fourier transform, daher meist FFT abgekürzt) ist ein Algorithmus zur effizienten Berechnung der Werte einer diskreten Fourier Transformation (DFT). Bei solchen Algorithmen handelt es sich… …   Deutsch Wikipedia

  • Schnelle Fouriertransformation — Die schnelle Fourier Transformation (englisch fast Fourier transform, daher meist FFT abgekürzt) ist ein Algorithmus zur effizienten Berechnung der Werte einer diskreten Fourier Transformation (DFT). Bei dem Algorithmus handelt es sich um ein… …   Deutsch Wikipedia

  • Schnelle Wavelet-Transformation — Die Schnelle Wavelet Transformation ist ein effizientes Verfahren zur Berechnung einer diskreten Wavelet Transformation. Sie kann mit der Anwendung der schnellen Fourier Transformation zur Berechnung der Koeffizienten einer Fourier Reihe… …   Deutsch Wikipedia

  • Diskrete Faltung — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Diese gibt eine Art „Überlappung“ zwischen f und einer gespiegelten und… …   Deutsch Wikipedia

  • Zyklische Faltung — Die zyklische Faltung, auch als zirkulare Faltung oder als periodische Faltung bezeichnet, ist in der Funktionalanalysis eine Form der diskreten Faltung. Dabei werden Folgen der Länge N periodisch fortgesetzt, welche sich durch die zyklische… …   Deutsch Wikipedia

  • Faltungsintegral — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Diese gibt eine Art „Überlappung“ zwischen f und einer gespiegelten und… …   Deutsch Wikipedia

  • Faltungsprodukt — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Diese gibt eine Art „Überlappung“ zwischen f und einer gespiegelten und… …   Deutsch Wikipedia

  • Faltungssatz — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Diese gibt eine Art „Überlappung“ zwischen f und einer gespiegelten und… …   Deutsch Wikipedia

  • Faltungstheorem — In der Mathematik und besonders in der Funktionalanalysis beschreibt die Faltung einen mathematischen Operator, der für zwei Funktionen f und g eine dritte Funktion liefert. Diese gibt eine Art „Überlappung“ zwischen f und einer gespiegelten und… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”