Xmipp
v3.23.11-Nereus
|
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) |
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)
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)
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
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