Deconvolution of a Convolved Gaussian and Expoential curve

조회 수: 10 (최근 30일)
Matthew Robinson
Matthew Robinson 2019년 4월 10일
답변: John D'Errico 2019년 10월 24일
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
Wenxuan Zheng
Wenxuan Zheng 2019년 10월 24일
Hi, just wondering if you solved this cuz I am looking for the solution too :)

댓글을 달려면 로그인하십시오.

채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2019년 4월 10일
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

추가 답변 (1개)

John D'Errico
John D'Errico 2019년 10월 24일
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.

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by