MATLAB Answers

Deconvolution of a Convolved Gaussian and Expoential curve

I would like to extract a decaying exponential curve from another curve that I already have, which is known to be the result of the convolution of a Gaussian and the pre-mentioned decaying exponetial.
The exact form of the exponential is unkown, but the form of the gaussian is known relatively well (i.e. amplitude, Full-width half maximum), and could be decsribed by your standard gaussian equation.
The already convoled data is also known, though it is relatively discreet, with uneven spacing (e.g. X = [0 1 5 10 20 100 200 500 1000])
I have tried using the "deconv" function available in matlab (https://uk.mathworks.com/help/matlab/ref/deconv.html) to hopefully get this exponential out, setting u to be the vector related to the already covolved data (whose length is the same as X), and v to the gaussian curve calculated at the already mentioned X positions (and hence is of the same length as u). However, it does not produce an exponential as hoped, and now at a loss of how to proceed.
Any suggestions or tips as to how I may be able to achieve this would be greatly appreciated. Thanks.

  댓글 수: 1

Hi, just wondering if you solved this cuz I am looking for the solution too :)

로그인 to comment.

답변 수: 2

 채택된 답변

To my understanding the deconv-functions work for evenly spaced data. In your case I'd either try to do the convolution analytically to get a functional form, f(pars,x) that you can use for fitting to your data with fminsearch, lsqnonlin or simialr minimization-functions. Here your pars would be an array with something like [alpha_exp, sigma_Gaussian, Amplitude]. This shouldn't be too hard if you have something like a decaying exponential, but could get messy if you have something more complex.
Another more brutish approach would be to do all of that numerically, with a numerical convolution that you only calculate over suitably large windows around your sample-points, suitably here means something corresponding to 3-5 sigma of your Gaussian. Whether this will be best done wiht a full array of your independent variable covering the range of your X or in snippets around each of your X-value I cannot determine.
HTH

  댓글 수: 0

로그인 to comment.


John D'Errico 님의 답변 24 Oct 2019

As I recall from long ago, numeical deconvolution is a variation of a first kind integral equation.
The problem is, first kind integral equations can be difficult to solve because they amplify any noise in your data. This is called an ill-posed problem. Even tiny errors down in the least significant bits can be an issue.
And sadly, deconv is not able to handle non-uniformly spaced data. So you would need to write the code yourself.
The more information you can bring to the problem, the better off you will be. So, if you know the data arises as the convolution between a known gaussian and an unknown exponential, then it will be far easier on you than if you could do no more than assume the unknown function is say some general spline curve, to be then estimated. So if all you need to find is the rate parameter of the exponential, things will not be too bad.

  댓글 수: 0

로그인 to comment.



Translated by