Xmipp  v3.23.11-Nereus
Functions
Fourier Convolve
Collaboration diagram for Fourier Convolve:

Functions

int ManyConvolveFourier (double Data[], double KernelDht[], double CaS[], double *ScratchBuffer, long SignalLength, double Shift)
 
int ManyConvolveFourierSymmetricKernel (double Data[], double KernelDht[], double CaS[], double *ScratchBuffer, long SignalLength, double Shift)
 
int OneConvolveFourier (double Data[], double Kernel[], long SignalLength, double Shift, int *Status)
 
int OneConvolveFourierSymmetricKernel (double Data[], double SymmetricKernel[], long SignalLength, double Shift, int *Status)
 

Detailed Description

Function Documentation

◆ ManyConvolveFourier()

int ManyConvolveFourier ( double  Data[],
double  KernelDht[],
double  CaS[],
double *  ScratchBuffer,
long  SignalLength,
double  Shift 
)

Fourier convolution with any kernel. Same conventions as for OneConvolveFourier. Preprocessing steps have to be carrried out elsewhere.

success: return(!ERROR); failure: return(ERROR)

◆ ManyConvolveFourierSymmetricKernel()

int ManyConvolveFourierSymmetricKernel ( double  Data[],
double  KernelDht[],
double  CaS[],
double *  ScratchBuffer,
long  SignalLength,
double  Shift 
)

Fourier convolution with a symmetric kernel. Same conventions as for OneConvolveFourierSymmetricKernel. Preprocessing steps have to be carrried out elsewhere

success: return(!ERROR); failure: return(ERROR)

◆ OneConvolveFourier()

int OneConvolveFourier ( double  Data[],
double  Kernel[],
long  SignalLength,
double  Shift,
int *  Status 
)

Fourier convolution 1D. Fourier convolution with any kernel. The kernel has an infinite, periodic (SignalLength) support. The kernel origin (hot spot) is at index [0].

The highest coordinate (SignalLength-2)/2 is at index [(SignalLength-2)/2] for SignalLength even. The highest coordinate (SignalLength-1)/2 is at index [(SignalLength-1)/2] for SignalLength odd.

The lowest coordinate -SignalLength/2 is at index [SignalLength/2] for SignalLength even. The lowest coordinate -(SignalLength-1)/2 is at index [(SignalLength+1)/2] for SignalLength odd.

The coordinate -1 is at index [SignalLength-1] for SignalLength even or odd.

The signal has an infinite, periodic (SignalLength) support. The output has same length SignalLength than the input. The output has already been allocated. The result of the convolution overwrites the input. The inverse DHT of the kernel overwrites the kernel. If the kernel is finite support, don't forget to pad!

success: return(!ERROR); failure: return(ERROR)

The returned value is duplicated in Status

◆ OneConvolveFourierSymmetricKernel()

int OneConvolveFourierSymmetricKernel ( double  Data[],
double  SymmetricKernel[],
long  SignalLength,
double  Shift,
int *  Status 
)

Fourier convolution with a symmetrical kernel. The kernel has an infinite, periodic (SignalLength) support. The kernel origin (hot spot) is at index [0]. The highest coordinate (SignalLength-2)/2 is at index [(SignalLength-2)/2] for SignalLength even. For symmetry, kernel[(SignalLength-2)/2] = 0 for SignalLength even.

The highest coordinate (SignalLength-1)/2 is at index [(SignalLength-1)/2] for SignalLength odd. No special symmetry requirement for SignalLength odd.

The lowest coordinate -SignalLength/2 is at index [SignalLength/2] for SignalLength even. The lowest coordinate -(SignalLength-1)/2 is at index [(SignalLength+1)/2] for SignalLength odd.

The coordinate -1 is at index [SignalLength-1] for SignalLength even or odd.

The signal has an infinite, periodic (SignalLength) support. The output has the same length SignalLength than the input. The output has already been allocated.

The kernel is even-symmetric around 0 (k[x] = k[-x]). Only the coord. >= 0 of the kernel need be given.

The result of the convolution overwrites the input. The inverse DHT of the kernel overwrites the kernel. If the kernel is finite support, don't forget to pad!

Observe the separate symmetries for SignalLength odd/even! For a symmetric kernel, DHT <=> DFT

success: return(!ERROR); failure: return(ERROR)

The returned value is duplicated in Status