Deconvolution of a Convolved Gaussian and Expoential curve
조회 수: 10 (최근 30일)
이전 댓글 표시
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
2019년 10월 24일
Hi, just wondering if you solved this cuz I am looking for the solution too :)
채택된 답변
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
댓글 수: 0
추가 답변 (1개)
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Descriptive Statistics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!