[SciPy-User] deconvolution of 1-D signals
Friedrich Romstedt
friedrichromstedt at gmail.com
Mon Aug 1 16:22:18 EDT 2011
Hi Ralf,
2011/7/31 Ralf Gommers <ralf.gommers at googlemail.com>:
> For a measured signal that is the convolution of a real signal with a
> response function, plus measurement noise on top, I want to recover the real
> signal. Since I know what the response function is and the noise is
> high-frequency compared to the real signal, a straightforward approach is to
> smooth the measured signal (or fit a spline to it), then remove the response
> function by deconvolution. See example code below.
I ran across this (see below) soon ago since I'm dealing with
information theory recently. It has an deconvolution example included
in 1D, and it compares some different general methods in a kind-of
"unified framework", as far as this exists. I found it quite
informative and helpful. If you can't get access I can get it from
the library in 2 weeks. The citation is:
Robert L. Fry (ed.), Bayesian Inference and Maximum Entropy Methods in
Science and Engineering: 21st International Workshop, Baltimore,
Maryland, AIP Conf. Proc. 617 (2002)
ISBN 0-7354-0063-6; ISSN 0094-243X
Tutorial "Bayesian Inference for Inverse Problems" (A.
Mohammad-Djafari) on page 477ff.
It includes different noise models, afair, at least the structure how
to deal with this. If I'm not mistaken the problem discussed there
was a mass-spectrometry spectrum, so should been shot noise mainly,
and of course the psf.
The tutorial covers (in short) maximum entropy as well as maximum
likelihood, and a combination of both (hence the "unification"). I
cannot help much with this since I'm new to it myself. But I did a
reasonable literature search, and this was one of the best outcomes.
But as said, I was about information theory.
Hope this is a useful pointer,
Friedrich
> Can anyone point me towards code that does the deconvolution efficiently?
> Perhaps signal.deconvolve would do the trick, but I can't seem to make it
> work (except for directly on the output of np.convolve(y, window,
> mode='valid')).
No. In fact, I don't think there is an automagical solution anywhere. :-)
Good luck!
More information about the SciPy-User
mailing list