curve of best fit

6 visualizaciones (últimos 30 días)
Nana Kwaku Antwi-Darkwah
Nana Kwaku Antwi-Darkwah el 19 de Mayo de 2022
Comentada: Bjorn Gustavsson el 20 de Mayo de 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

Respuesta aceptada

Bjorn Gustavsson
Bjorn Gustavsson el 19 de Mayo de 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 comentarios
Nana Kwaku Antwi-Darkwah
Nana Kwaku Antwi-Darkwah el 19 de Mayo de 2022
n=2
thank you so much, this is close enough to what I was looking for. The curve resembled this from polynomial degrees of 2 to 4. Is there any way to force the curve to at least pass over (/ go inbetween/ get closer to) the first 2 points without increasing the degree past 4. For degrees of 5 and above I get graphs that have more than one peak:
n = 5
Bjorn Gustavsson
Bjorn Gustavsson el 20 de Mayo de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Polynomials 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!

Translated by