Why does deconv.m produce inconsistent performance?

3 次查看(过去 30 天)
My ultimate goal is to deconvolve two probability density functions (or histograms). I am testing the process by making a convolved file Y=conv(A,B) and then deconvolving it, [Adecond,R]=deconv(Y,B). I have tested this with short vectors of integers and it works perfectly i.e. Adecond=A and R=0. It has also worked well for B = an actual 93-element histogram and A= 601-element normal distribution. But when I change B to a 93-element normal distribution, Adecond is erroneous with many small values over most of the range of the distribution and about 20-30 large varying values at the end of the vector. R is zero except for the last 20-30 elements in the vector. Why is deconv succeeding with one vector B and failing miserably with another very similar B?
Thanks, Jamie
  2 个评论
Image Analyst
Image Analyst 2014-1-25
If you want people to answer, you should attach your data file and your m-file.
Jamie
Jamie 2014-1-25
On further investigation, if B is not a pure Gaussian distribution, the conv-deconv seems to work. Is there a reason a pure clean Gaussian distribution can't be run through this prices against another nominally Guassian distribution?

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2014-1-25
编辑:Matt J 2014-1-25
I imagine because deconvolution by a Gaussian/normal distribution is ill-posed. A Gaussian filter's Fourier spectrum falls off very fast at high frequencies, making it's inverse filter very unstable. You might try deconvreg, if you have the Image Processing Toolbox, or some other regularized deconvolution scheme.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by