I want to make curve fitting to these points
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I want to make curve fitting to these points but when i made it the blue straight line appeared. What does it mean ?
2 comentarios
Umar
el 29 de Jul. de 2024
Hi @noura,
If you don’t mind, can you share your code with us to help resolve your issue.
dpb
el 29 de Jul. de 2024
You don't need his code; the answer is obvious by inspection. Put any set of symmetric points in and overall OLS will always return the mean; it's inevitable conclusion from the basis of the method to minimize the overall error sum of squares.
Respuesta aceptada
dpb
el 29 de Jul. de 2024
Editada: dpb
el 29 de Jul. de 2024
The top and bottom are identical pairs above and below the mean; hence when/if you fit the whole dataset, the single line that best fits all the data is (drum roll, please...) the mean.
You need two fits; one for the upper and one for the lower. The slope of one will be exactly the negative of the other, but the two intercepts will be different.
X=[16 17.5 20 25 32.5 37 42.5 45 48].';
Y=[0 9 17 21 27 34 41 48 55 ];
DY=Y-Y(end);
Y=[Y;Y(end)-DY].';
scatter(X,Y,'filled')
box on, grid on
ylim([-5 118])
b1=polyfit(X,Y(:,1),3)
b2=polyfit(X,Y(:,2),3)
y1=polyval(b1,X);
y2=polyval(b2,X);
hold on
plot(X,y1,'b-')
plot(X,y2,'r-')
7 comentarios
Umar
el 29 de Jul. de 2024
@dpb, thanks for your contribution and sharing your thoughts, really appreciated. @noura, please go ahead accept @dpb answer and give him a vote. If there are still further questions or issues, please let us know, we will be more happy to help.
dpb
el 30 de Jul. de 2024
Editada: dpb
el 30 de Jul. de 2024
"...the coefficients of the two are the negative of each other for the terms in X while the intercepts are different."
Also, notice that
X=[16 17.5 20 25 32.5 37 42.5 45 48].';
Y=[0 9 17 21 27 34 41 48 55 ];
DY=Y-Y(end);
Y=[Y;Y(end)-DY].';
b1=polyfit(X,Y(:,1),3);
b2=polyfit(X,Y(:,2),3);
mean_intercept=mean([b1(end) b2(end)])
mean_y=mean(Y,'all')
The average of the two intercepts is the mean of the overall data to within machine precision/roundoff in the fitting calculations...
That being so, it is in one sense only one polynomial, the second is completely known by only fitting the first; the issue still being there isn't any convenient way to return the double-valued function from only a f(x).
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with Curve Fitting Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!