Faltung
- Aktualisiert2025-07-30
- 5 Minute(n) Lesezeit
Berechnet die Faltung der Eingangsfolgen X und Y. Zur Bestimmung der Instanz des polymorphen VIs verbinden Sie Daten mit den Eingängen X und Y oder wählen Sie die Instanz manuell aus.

1D-Faltung
Die lineare Faltung der Signale x(t) und y(t) ist folgendermaßen definiert:

wobei das Symbol * für lineare Faltung steht.
Wenn Algorithmus auf direkt eingestellt ist, wird die diskrete Implementierung der linearen Faltung zur Ermittlung von X * Y nach folgender Gleichung berechnet:

für i = 0, 1, 2, … , M+N–2
wobei h gleich X * Y,
N ist die Anzahl der Elemente in X, M ist die Anzahl der Elemente in Y, die indizierten Elemente außerhalb der Bereiche von X und Y sind gleich Null, wie aus den folgenden Beziehungen hervorgeht:xj = 0, j < 0, oder j ≥ N
und
yj = 0, j < 0, oder j ≥ M.
Wenn Algorithmus auf Frequenzbereich eingestellt ist, wird die lineare Faltung durch Befolgung der folgenden Schritte berechnet:
- Zuerst wird das Ende von X und Y mit Nullen aufgefüllt, so dass beide die Länge M + N – 1 haben (vgl. die folgenden Gleichungen).

- Als Zweites führt das VI anhand der folgenden Gleichungen die Fourier-Transformation von X' und Y' durch:
- Danach wird X'(f) mit Y'(f) multipliziert und die inverse Fourier-Transformation des Produkts gebildet. Das Ergebnis davon ist die lineare Faltung von X und Y, wie in der folgenden Gleichung dargestellt:
Auf diese Weise wird eine lineare Faltung, keine zirkuläre erzielt. Da jedoch x(t) * y(t)N ⇔ X(f)Y(f) ein Fourier-Transformationspaar ist, wobei x(t) * y(t)N die zirkuläre Faltung von x(t) und y(t) ist, können Sie eine zirkuläre Version der Faltung erstellen. Zur Berechnung der zirkulären Faltung können Sie das Blockdiagramm zum Beispiel so aufbauen, wie in der folgenden Abbildung dargestellt.

2D-Faltung
Wenn Algorithmus auf direkt eingestellt ist, wird die zweidimensionale Faltung der Eingangsmatrizen X und Y anhand der folgenden Gleichung berechnet:

für i = 0, 1, 2, … , M1+M2–2 und j = 0, 1, 2, … , N1+N2–2
wobei h gleich X * Y,
M1 ist die Anzahl der Zeilen der Matrix X, N1 ist die Anzahl der Spalten der Matrix X, M2 ist die Anzahl der Zeilen der Matrix Y, N2 ist die Anzahl der Spalten der Matrix Y, Die indizierten Elemente außerhalb der Bereiche von X und Y sind gleich Null, wie die folgenden Beziehungen zeigen:x(m,n), m < 0 oder m ≥M1 oder n < 0 oder n ≥N1
und
y(m,n) , m < 0 oder m ≥M2 oder n < 0 oder n ≥N2.
Wenn Algorithmus auf Frequenzbereich eingestellt ist, wird die zweidimensionale Faltung durch Befolgung der folgenden Schritte berechnet:
- Zunächst werden X und Y rechts mit Nullen aufgefüllt, so dass ihre Größe (M1 + M2 – 1) mal (N1 + N2 – 2) beträgt (vgl. die folgenden Gleichungen).

- Als Zweites führt das VI anhand der folgenden Gleichungen die Fourier-Transformation von X' und Y' durch:
- Danach wird X'(f) mit Y'(f) multipliziert und die inverse Fourier-Transformation des Produkts gebildet. Das Ergebnis davon ist die zweidimensionale Faltung von X und Y, wie in der folgenden Gleichung dargestellt:
Die Größe der Ausgangsmatrix X * Y richtet sich nach der Ausgangsgröße (vgl. Abbildung).

-
full
Die Ausgangsmatrix X * Y lautet ([M1+M2–1], [N1+N2–1]).
-
size X
Diese Funktion ist bei der Bildverarbeitung von Nutzen. Wenn X die zu filternde Grafik ist, dann ist Y eine kleine Matrix, die als Faltungskern bezeichnet wird. X * Y ist die gefilterte Grafik. Sie ist genauso groß wie die Grafik X. Die [M1, N1]-Ausgangsmatrix ist der zentrale Bestandteil der Ausgangsmatrix, wenn die Ausgangsgröße auf full eingestellt ist.
-
compact
Die Berechnung der Randelemente von X * Y erfordert Null-Padding, wenn die Ausgabegröße full oder size Xist. Diese Randelemente werden bei einer Ausgangsgröße von compact entfernt. Die Ausgangsmatrix ([M1–M2+1], [N1–N2+1]) ist der zentrale Bestandteil der Ausgangsmatrix, wenn die Ausgangsgröße auf size X eingestellt ist.
Beispiele
Die folgenden Beispieldateien sind in LabVIEW enthalten.
- labview\examples\Signal Processing\Signal Operation\Edge Detection with 2D Convolution.vi