Funktionen > Vektor und Matrix > Weitere Array-Funktionen > Faltung und Kreuzkorrelation
  
Faltung und Kreuzkorrelation
convolve(S, K, [BC], [OV]) – Führt Faltungen zwischen 2 Vektoren (1D) oder 2 Matrizen (2D) mit einer willkürlichen Phase aus.
Die Faltung in der Zeit entspricht der Vervielfachung der Frequenz (und umgekehrt) und ist hilfreich bei der digitalen Filterung.
crosscorr(S, K, [BC], [OV]) – Führt eine Kreuzkorrelation zwischen 2 Vektoren (eindimensionale Korrelation) oder 2 Matrizen (zweidimensionale Korrelation) mit einer willkürlichen Phase aus.
Die Korrelation ist äquivalent zur Faltung, wobei eine Sequenz zeitlich umgekehrt wird, und wird oft zum Suchen der Impulsantwort eines Systems verwendet.
Die Funktion crosscorr kann für die Korrelation von Bildern verwendet werden.
Die Funktion crosscorr kombiniert die Funktionalität der abgelehnten Funktionen correl und correl2d.
Argumente
S ist ein Vektor oder eine Matrix, der bzw. die das Eingabesignal darstellt. Die Array-Elemente können reelle oder komplexe Werte enthalten.
K ist ein Vektor oder eine Matrix, der bzw. die den Kern darstellt. Die Array-Elemente können reelle oder komplexe Werte enthalten.
BC (optional) ist ein ganzzahliges Argument, dass den auszuführenden Faltungstyp vorgibt, indem angegeben wird, wie die Grenzen der Matrix während der Korrelation behandelt werden sollen. BC kann auf 0 (Standard), 1, 2 oder 3 festgelegt werden, wobei:
0: Linear (oder Auffüllen mit Nullen) – Pixel außerhalb der Matrixbegrenzung werden als Nullen behandelt.
1: Kreisförmig (oder periodischer Wrap-around) – Pixel außerhalb der Matrixbegrenzung werden als periodische Fortsetzung der Matrix behandelt.
2: Reflektion – Pixel außerhalb der Matrixbegrenzung werden so behandelt, als ob sie entlang der Matrixkanten gespiegelt würden.
3: Fortsetzung – Pixel außerhalb der Matrixbegrenzung werden als letzter Wert innerhalb der Matrix behandelt.
OV (optional) ist ein ganzzahliger Wert oder ein Vektor aus zwei ganzzahligen Werten, der vorgibt, ob das zweite Signal verschoben wird. Er wird dafür verwendet, die Anfangsüberlappung der Zeilen und Spalten der Kernmatrix K mit der Eingabesignalmatrix S anzugeben. Das erste Element des Vektors gibt die Zeilenüberlappung und die zweite die Spaltenüberlappung an.
Die minimale Überlappung darf nicht kleiner als 1 und die maximale Überlappung nicht größer als die Kerngröße sein.
Bei einer Nullphasenkorrelation muss die Überlappung so definiert sein, dass der Ursprung des Kerns sich in der Mitte des Kerns befindet, sofern der Kern keine Matrix ungewöhnlicher Größe ist. In diesem Fall sollten die beiden Überlappungsparameter auf die Anzahl der Zeilen und Spalten des Kerns minus ihrer jeweiligen Hälfte festgelegt werden.
Für die eindimensionale Kreuzkorrelation wird die Zeilenüberlappung auf 1 festgelegt.
Für die zweidimensionale Kreuzkorrelation wird die Standardüberlappung wie folgt festgelegt:
Row_overlap = K_rows − K_rows/2
Column_overlap = K_columns − K_columns/2