curve of best fit
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Nana Kwaku Antwi-Darkwah
le 19 Mai 2022
Commenté : Bjorn Gustavsson
le 20 Mai 2022
I want to get a curve of best fit that looks like this
But after testing a number of curve fitting methods I have not been able to obtain a curve such as the one above. For example when I use polynomial curve fitting the resulting curves I get, even after increasing the polynomial degree, are nothing like my desired curve:
n = 2
n = 3
Please can anyone offer me assistance with this ?
load ('eddy.mat')
load ('x1.mat')
coefficients = polyfit(eddy, x1, 2);
numFitPoints = 100;
xFit = linspace(min(eddy), max(eddy), numFitPoints);
yFit = polyval(coefficients, xFit);
scatter(eddy,x1,'d','filled','k')
hold on
grid on
plot(xFit,yFit,'r-','LineWidth',2)
x([0 0.01])
y([0 0.5])
hold off
0 commentaires
Réponse acceptée
Bjorn Gustavsson
le 19 Mai 2022
In order to get a function that has two y-values for for some range of x-values you will cannot fit a polynomial such that y=p(x). If you instead fit a polynomial such that x=p(y) then you might produce a curve that you've sketched. So try something like:
px_of_y = polyfit(y,x,2);% or some higher order polynomial.
y_i = linspace(0,1,101);
x_2 = polyval(px_of_y,y_i);
plot(x_2,y_i)
HTH
2 commentaires
Bjorn Gustavsson
le 20 Mai 2022
If you know that you have different uncertainties (expected/known standar deviation of the different points not the same) there are a couple of poly-fit variants on the file exchange, look there for polyfit3 (one I've used). You can also "roll your own" least-square fitting-function with lscov (but then you'll have to set up your own matrix for the least-square fitting and such).
HTH
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Fit Postprocessing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!