Description | X is assumed to be the result of a convolution of some "true" profile with the response function Rsp; a deconvolution is attempted and stored in Y. A filter Flt is also calculated; if more than one vector is to be deconvolved with the same Rsp, use *VF_deconvolve* only once and use the filter Flt thus obtained to deconvolve other vectors by calling *VF_filter*. The response has to be stored in Rsp in wrap-around order: the elements for zero and positive times (or whatever the independent variable is) are stored as Rsp_{0} to Rsp_{size/2} and the elements for negative times as Rsp_{size/2+1} to Rsp_{size-1}.
You may wish to use *VF_rotate* or *VF_reflect* to obtain the correct order when constructing the response vector.
X, Y, Rsp, and Flt must all be of the same size, which has to be an integer power of 2. X may be overwritten by Y, Rsp may be overwritten by Flt, but X and Flt as well as Y and Rsp have to be distinct from each other.
Mathematically, Flt is the inverse of the Fourier transform of Rsp. If the Fourier transform of Rsp contains elements equal to zero, all information is lost for the respective frequency and no reconstruction is possible. The best one can do in this case is to accept this loss and to deconvolve only up to those frequencies where still something is left to be reconstructed.
You are therefore advised not to use this function blindly but rather to inspect the Fourier transform of Rsp and decide what to do on the basis of your specific application. If you wish to use this function nevertheless, you may rely on the automatic editing of the filter, built into *VF_deconvolve*. Thereby, Flt is set to zero (instead of infinity) at those frequences where all information has been lost. You may set the threshold for this implicit editing by *VF_setRspEdit*. In order to retrieve the threshold actually set, use *VF_getRspEdit*.
This deconvolution is based on the implicit assumption that X is periodic; if this is not the case, see the description of *VF_convolve* about how to avoid end effects.
About special versions with the prefixes *VFp_, VFs_* and *VFl_*, consult chapter 4.8. |