# curve of best fit

8 views (last 30 days)
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 ?
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

Bjorn Gustavsson on 19 May 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 CommentsShowHide 1 older comment
Bjorn Gustavsson on 20 May 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