| VFb_xcorr | VDb_xcorr | VEb_xcorr |  
  | 
| Funktion | Kreuzkorrelationsfunktion |  
  | 
| Syntax C/C++ | #include <VFstd.h>
 void VF_xcorr( fVector Z, fVector X, fVector Y, ui size );
 void VFb_xcorr( fVector Z, fVector X, fVector Y, ui size, fVector Buf ); |  
| C++ VecObj | #include <OptiVec.h>
 void vector<T>::xcorr( const vector<T>& X, const vector<T>& Y ); void vector<T>::b_xcorr( const vector<T>& X, const vector<T>& Y, vector<T>& Buf ); |  
| Pascal/Delphi | uses VFstd;
 procedure VF_xcorr( Z, X, Y:fVector; size:UIntSize );
 procedure VFb_xcorr( Z, X, Y:fVector; size:UIntSize; Buf:fVector ); |  
  | 
| CUDA-Funktion C/C++ | #include <cudaVFstd.h>
 int cudaVF_xcorr( fVector d_Z, fVector d_X, fVector d_Y, ui size );
 void VFcu_xcorr( fVector h_Z, fVector h_X, fVector h_Y, ui size );
 |  
| CUDA-Funktion Pascal/Delphi | uses VFstd;
 function cudaVF_xcorr( d_Z, d_X, d_Y:fVector; size:UIntSize ): IntBool;
 procedure VFcu_xcorr( h_Z, h_X, h_Y:fVector; size:UIntSize );
 |  
  | 
| Beschreibung | Die Kreuzkorrelationsfunktion (KKF) von X und Y wird berechnet und in Z gespeichert. Dabei erhalten die Elemente Z0 bis Zsize/2−1 die KKF für 0 und für positive Verschiebungen; für negative Verschiebungen wird die KKF beginnend mit der am stärksten negativen Verschiebung in Zsize/2+1 bis Zsize−1 gespeichert. Da diese Funktion (wie alle auf der Fourier-Transformation basierenden Routinen) implizit von periodischen X, Y und Z ausgeht, ist die KKF für die stärkste positive Verschiebung identisch mit der KKF für die stärkste negative Verschiebung. Dieser Wert befindet sich im Element Zsize/2. Um die KKF in normale Ordnung zu bringen, kann
  VF_rotate( Z, Z, size, size/2 );
 aufgerufen werden. Danach befindet sich der Nullpunkt an der Position size/2.
 Ist X nicht periodisch, so sollten Randeffekte mit den bei VF_convolve beschriebenen Methoden vermieden werden.
 Intern benötigt VF_xcorr zusätzlichen Pufferspeicher, der automatisch reserviert und wieder freigegeben wird. Bei wiederholten Aufrufen wäre dies ineffizient. Es wird empfohlen, für solche Fälle stattdessen VFb_xcorr zu verwenden. Die Größe von Buf muss dabei ≥ 3*size sein. Außerdem muss Buf 128-bit (P8) bzw. 256-bit( P9) ausgerichtet sein. Um dies zu garantieren, sollte man nur Vektoren als Buf verwenden, die mit der VF_vector-Familie alloziert wurden.  |  
  | 
| Fehlerbehandlung | Wenn size nicht eine Potenz von 2 ist, meldet sich VF_FFT (worauf VF_xcorr basiert) mit der Fehlermeldung "Size must be integer power of 2." und bricht das Programm ab. |  
  | 
 | 
 |