Automatic detection of the start and end-point of a mono-exponential curve

12 views (last 30 days)
The first results of my research were great. I am using a device which calculates the tissue saturation during and after exercise. After exercise, a mono-exponential increase is seen with a preceding delay. The detection of important points such as the starting point and ending point of the mono-exponential curve is rather difficult yet important.
For the starting point I came up with 2 ideas:
- 1st derivative of the signal, and than the peak resulting in a starting point
- cross-correlation of a mono-exponential shaped curve over the data and detecting the highest point
However, both methods have problems with detecting the starting points if the recovery of the patient is extreme slow (no major peak is present then)
So my first question, does anybody know a new possibility to detect the starting point automatically of a mono-exponential curve?
The ending point is also a bit difficult: we have used several methods but we might miss a better one:
-maximal value after exercise, +100 seconds--> gives problems if the data drops too much after the maximal value (error is too big)
-maximal value after exercise--> calculate tau, endpoint=5*tau; same problem as the method above
-plot a linear and 4th polynomial curve starting from the starting point, if the difference is >5% than that's the end point-->gave unsatisfactory reproducible results
-search the local maximum which is not higher within 10 seconds-->seems to work fine, but I find it a arbitrary method
SO, which of you did lots of research concerning kinetics and can provide me with a good, reliable method for the detection of the starting and endpoint of a mono-exp. curve. Important is that healthy subjects have a fast recovery and some patients have EXTREME slow recovery making it rather hard!
Thanks in advance,
  2 Comments
Matt J
Matt J on 26 Sep 2015
I think we need to see a "slow-recovery" data set. Ideally, you would attach one in a .mat file.
KFrenkie
KFrenkie on 26 Sep 2015
Hi Matt,
Seems logic! the file contains 2 subjects t and O2Hb belong to healthy subject t2 and O2Hb2 belong to a patient
Within the O2Hb and O2Hb2 row 1 and 2 separate tissues.
plot(t2,O2Hb2_filt(2,:))
plot(t,O2Hb_filt(2,:))
Plotting shows the difference between a healthy and diseased tissue.

Sign in to comment.

Answers (2)

Star Strider
Star Strider on 26 Sep 2015
Taking a guess here because I don’t have your data, and I’m not certain what information you want from it.
I would begin by using a Savitzky-Golay filter on the top signal to approximate it and eliminate as much of the noise as possible.
To find the peaks, use the findpeaks function on the filtered data. Then to find the minima or troughs, invert it (just take the negative of the smoothed curve), and use findpeaks to get the peak (actually the minimum or trough), with the corresponding values, and indices or independent variable values (since findpeaks gives you that option.
Create a model for your curve, and with the start-end information you have, fit each part with the same nonlinear regression routine.
  6 Comments
KFrenkie
KFrenkie on 26 Sep 2015
Wow! Thanks, some things are quite useful but I think I was not clear with what I meant. The exercise stopped @ datapoint 10880. From there, there is a specific delay untill the actual mono-exponential starts. I want the most optimal method to detect the best starting point (and end-point). The effort you took is a way, but I wonder if there are more ways, like I wrote in my initial question: derivative, cross-correlation, max value + 100 second enz. enz.. For healthy subjects the above mentioned methods work. In the more extreme cases of some patients, the methods don't work anymore.
Star Strider
Star Strider on 26 Sep 2015
My pleasure.
What part of the ‘mono-exponential’ do you want? I was under the impression you wanted the rise, but if you want the recovery, you have to begin at the peak, not the trough, and decide where to end the record you use in your parameter estimation. (I have no idea what to make of the O2Hb2 data, since it seems nothing like the first set.)
I’m now totally confused as to what you’re asking. I gave you the best method I know of to detect the starting and end points, and estimate the parameters, which is what I understood you wanted. It works.
I have no idea what you’re actually studying, how you’re studying it, or what disorders your patient population has, so my ability to help you is limited. It would be extremely difficult to design one algorithm that applies in both health and disease. That’s simply the nature of physiology in general, and the complexity of normal and compensatory regulatory mechanisms. Be mindful that disease is pleomorphic and multi-factoral, so that the same ‘disease’, or endpoint can (and often does) result from different causative (etiological) processes in different individuals, and the same disease may manifest differently in different individuals.

Sign in to comment.


K_Reset K
K_Reset K on 17 Aug 2016
hi,I'm a student from China and my research direction is to calculate the tissue saturation. However, i don't hava a device to get the data, so can you give me some data about HbO2 and Hb with forearm blocking experiments?Thank you very much!

Community Treasure Hunt

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

Start Hunting!