I want to get a linear curve fitting for each line in graph
1 view (last 30 days)
Show older comments
I want to get a linear curve fitting for each of the data point separately in the graph below
0 Comments
Answers (1)
dpb
on 19 Aug 2022
The Statistics Toolbox has a function lsline that does this automagically but for some reason that is totally unexplicable to me, they've neutered it so it ignores any/all lines that are not just points/markers. Dunno why they think use cases like this aren't common as well.
But a workaround could be
hAx=gca; hL=hAx.Children; % retrieve the axes and line handles
hF=arrayfun(@(h)fitlm(h.XData,h.YData,"linear"),hL,'Uni',0); % fit each in turn, save fit handles
LS=get(hL,'Linestyle'); % get the used linestyle to put back
MK=get(hL,'Marker'); % and marker, too
set(hL,{'Linestyle'},{'none'},'Marker',{'o'}) % turn line off, add marker
hLSqL=lsline(hAx); % now add the LS line
set(hL,{'Linestyle'},LS,{'Marker'},MK) % put back the original line, marker
% optional instead to keep a marker -- can be hard to see with both lines where data are
%set(hL,{'Linestyle'},LS,{'Marker'},{'none'}) % put back the original line, leave marker
Alternatively, you can (and I'd recommend) use the X,Y data you had when you drew the plot and follow a similar route but use those data directly.
0 Comments
See Also
Categories
Find more on Interpolation 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!