How do I perform a segmented regression for linear and exponential piecewise curve
16 views (last 30 days)
Show older comments
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1054905/image.png)
Hi, everyone! I simulated this signal where the first segment is linear (constant), second segment is linear (positive gradient) and the third segment is an exponential decay. Is there a way for me to do a piecewise regression with 3 line segments - linear, linear and exponential? Thank you very much.
p/s: I think this is my first ever post, so I might not know the rules on how to ask a question proper, so if more information is needed, please let me know what other info I should provide! Thanks!
0 Comments
Answers (2)
Saksham Gupta
on 5 Jul 2022
Edited: Saksham Gupta
on 5 Jul 2022
As per my understanding , you wish to know how to perform segmented regression in MATLAB.
You should try Curve Fitter App of MATLAB with your data set, using 'Interpolant' or 'Smoothing Spline' as fit type might be helpful with the dataset of your kind.
Here are a few file exchanges that you might find helpful as well:
Sam Chak
on 5 Jul 2022
Edited: Sam Chak
on 5 Jul 2022
Hi @Luqman
There are 3 segments defined over certain intervals of t:
a constant
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1054975/image.png)
a straight line
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1054980/image.png)
and an exponential decay
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1054985/image.png)
So, the piecewise model probably look something like this:
t = linspace(0, 520, 52001);
x1 = 100*((0 <= t) & (t < 80));
x2 = (((600 - 100)/(120 - 80))*t - 900).*((80 <= t) & (t < 120));
x3 = 600*exp(-0.0025*1.7918*(t - 120)).*((120 <= t) & (t < 520));
x = x1 + x2 + x3;
plot(t, x, 'linewidth', 2), grid on,
xlim([0 520]), ylim([0 700])
2 Comments
See Also
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!