MF_convolve MD_convolve ME_convolve
FunktionFaltung (Konvolution) mit einer räumlichen Response-Funktion
Syntax C/C++#include <MFstd.h>
void MF_convolve( fMatrix Y, fMatrix Flt, fMatrix X, fMatrix Rsp, ui ht, ui len );
C++ MatObj#include <OptiVec.h>
void matrix<T>::convolve( matrix<T> Flt, const matrix<T>& MX, const matrix<T> Rsp);
void matrix<T>::convolve( matrix<T>* Flt, const matrix<T>& MX, const matrix<T> Rsp);
Pascal/Delphiuses MFstd;
procedure MF_convolve( MY, MFlt, MX, MRsp:fMatrix; ht, len:UIntSize );
BeschreibungDie Faltung von MX mit der räumlichen Antwort- (engl. response) Funktion MRsp wird in MY zurückgegeben. Ein Raum-Filter MFlt wird ebenfalls berechnet. Falls mehr als eine Matrix mit derselben MRsp gefaltet werden soll, benutze man MF_convolve nur einmal und verwende anschließend MF_filter für die übrigen Matrizen.

Die Response-Funktion muß so in MRsp übergeben werden, daß jede Zeile i von MRsp die Antwortfunktion für 0 und positive x-Werte als Elemente MRspi,0 bis MRspi,len/2 enthält sowie die Antwortfunktion für negative x-Werte (beginnend mit dem betragsmäßig größten negativen x) in MRspi,len/2+1 bis MRspi,len-1.
Analog muß jede Spalte von MRsp die Übertragunsfunktion für 0 und positive y-Werte als Elemente MRsp0,j bis MRsplen/2,j enthalten sowie die Übertragungsfunktion für negative y-Werte (beginnend mit dem betragsmäßig größten negativen y) in MRsplen/2+1,j bis MRsplen-1,j.
Am besten benutzte man MF_Rows_rotate und MF_Cols_rotate oder MF_Rows_reflect und MF_Cols_reflect, um diese Anordnung zu erhalten und die Matrix der Übertragungsfunktion zu konstruieren.

Das Ergebnis der Faltung erscheint mit der Summe aller Elemente von MRsp skaliert. Im Normalfall sollte MRsp daher auf 1.0 normalisiert werden.

MX, MY, MRsp und MFlt müssen alle dieselben Dimensionen besitzen. Sowohl len als auch ht müssen ganzzahlige Potenzen von 2 sein. MX darf durch MY überschrieben werden und MRsp durch MFlt, aber MX und MFlt sowie MY und MRsp müssen jeweils voneinander verschieden sein.

Wie im ein-dimensionalen Fall kann die Behandlung von Rundungsfehlern in der Konstruktion von MFlt mittels VF_setRspEdit modifiziert werden.
Die Eingabe-Matrix wird als in beiden Dimensionen periodisch angenommen. Man vergleiche die Beschreibung von VF_convolve bezüglich der Vermeidung von Randeffekten bei nicht-periodischen Matrizen.
Bezüglich spezieller Versionen mit den Präfixen MFl_ und MFs_ vergleiche man Kap. 4.8 von http://www.optivec.de/vecfuncs/.

FehlerbehandlungFalls entweder len oder ht nicht eine Potenz von 2 ist, meldet sich VF_FFT (worauf MF_convolve basiert) mit der Fehlermeldung "Size must be an integer power of 2" und bricht das Programm ab.
QuerverweisMF_deconvolve,   MF_FFT,   Kap. 12

MatrixLib Inhaltsverzeichnis  OptiVec Home