Fitting lines to a scatter plot
5 views (last 30 days)
Show older comments
Hello,
I have a scatterplot which I want to fit lines to it. but not one line, I want to consider my data in two parts and for each part I want to fit a line.
How should I do for this?
I used to apply lsline for fiting up to now. below you can find what I want to do. for example the threshould is 2000. Before and after that I want to fit a seperate line.
Thanks in advance.
0 Comments
Answers (1)
Ameer Hamza
on 11 May 2020
See this example. It does not use lsline. It uses matrix operation to find the least square estimation for the data. It specifies the point to partition the dataset.
% Example dataset
x = rand(1, 10000)*3000;
y = randn(1, 10000)*1 - ((x-1000)/1000).^2;
x_partition = 1500;
x1 = x(x <= x_partition);
y1 = y(x <= x_partition);
x2 = x(x > x_partition);
y2 = y(x > x_partition);
X1 = [x1(:) ones(size(x1(:)))];
Y1 = y1(:);
X2 = [x2(:) ones(size(x2(:)))];
Y2 = y2(:);
coeff1 = X1\Y1; % least suare estimation of line
coeff2 = X2\Y2;
figure;
ax = axes();
hold(ax);
scatter(x1, y1, 'b.')
scatter(x2, y2, 'b.')
plot(x1, X1*coeff1, 'r', 'LineWidth', 3);
plot(x2, X2*coeff2, 'r', 'LineWidth', 3);
0 Comments
See Also
Categories
Find more on Scatter Plots 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!