Fitting lines to a scatter plot

3 次查看(过去 30 天)
Honey
Honey 2020-5-11
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.

回答(1 个)

Ameer Hamza
Ameer Hamza 2020-5-11
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);

类别

Help CenterFile Exchange 中查找有关 Fit Postprocessing 的更多信息

标签

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by