Value to get back to initial

3 views (last 30 days)
Umber Sheikh
Umber Sheikh on 10 Feb 2019
Edited: Adam Danz on 11 Feb 2019
Hello!!
Shown in the image, I have a exponential decay of fluid due to dialysis. I want to stop the dialysis at 75mg/Liter (shown at the intersection at the red line and blue line) and want to see how long it takes from that point to go back up to 150mg/Liter. How can i do that?
  2 Comments
Mark Sherstan
Mark Sherstan on 10 Feb 2019
To clarify you want to find the intersection point at y = 75 and y = 150 and find the time between those two points?

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 11 Feb 2019
Edited: Adam Danz on 11 Feb 2019
This solution finds the time window that starts and ends when dialysis is at 75 and 150, respectively. I created fake data to work with. Then you can define the dialysis window. 'Duration' is the duration of the window along the x axis that starts and ends according to the dialysis window along the y axis. Lastly, a plot is produced to show the window for confirmation.
% Create fake data to work with
time = 0 : .1 : 50;
x = linspace(10.5, -2, length(time));
dialysis = exp(x/2);
% define dialysis window
window = [75, 150];
% Find closest index to the dialysis window
% Assumes 'dialysis' is a row vector. Otherwise, remove transposes.
[~, minIdx] = min(abs([dialysis', dialysis'] - window));
% Calculate time between the dialysis window
duration = time(minIdx(1)) - time(minIdx(2));
% Verify by plotting results
figure
plot(time, dialysis);
hold on
plot(time([1,1;end,end]), dialysis([minIdx; minIdx]), 'm-') %dialysis window
plot(time([minIdx; minIdx]), dialysis([minIdx', minIdx']), 'm-') %time window
title(sprintf('Fake Data; time window = %.2f', duration))

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!