DECONVOLUTE function

Syntax: | `yd = DECONVOLUTE(y,b)`

The `DECONVOLUTE` function accepts two vector arguments. It deconvolutes the first argument vector, `y`, with the specified blurring vector, `b`. The result is a vector the same length as `y`. The blurring vector `b`, the second argument, must contain an even number of points. The preferred lengths are powers of `2`. The deconvolution is done using fast Fourier transforms. The following restrictions apply:

- `y` must be padded at its lower end with a number of zeros equal to the number of non-zero elements in `b`. For example, if both vectors have `128` elements, and `b` is non-zero in the range `1 - 29`, then `y` must contain zeros in locations `1 - 29`
- `y` and `b` must have the same number of elements
- the end points of `b` must not be equal. A difference of less than `0.0001` produces oscillations in the deconvoluted result. The usual way to correct for this is to shift `b` to the left so that the first point has a non-zero value. Together with the first restriction, this ensures that the right most point has the value zero, leaving the ends unequal.

Noise in `b` produces a change in the output, which, due to averaging, has a small effect. Noise effects depend on the shape of the deconvoluted peak. The narrower this peak, the more effect the noise in `b` has. This occurs because each noisy point becomes a greater percentage of the total number in the deconvoluting function, thus reducing the average effect. In many applications, the noise in the measured data is statistical in nature and so, to reduce the sensitivity to this noise on the deconvolution, apply smoothing filters on the measured data before deconvolution.

The `CONVOLUTE` function calculates the convolution.