help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HELP please, Can't fit data properly


From: Przemek Klosowski
Subject: Re: HELP please, Can't fit data properly
Date: Wed, 3 Oct 2018 18:02:24 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

On 10/03/2018 05:15 PM, Doug Stewart wrote:


On Wed, Oct 3, 2018 at 4:25 PM James Sherman Jr. <address@hidden> wrote:
On Wed, Oct 3, 2018 at 4:07 PM T.G.ALG <address@hidden> wrote:
Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I
plot it, it doesn't fit:

DATA:
C30 =

   0.063330   0.057200   0.052870   0.047380   0.044860   0.039710 
0.037070   0.036030   0.034990
t =

    1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000 
13.0000   18.0000

FIT:
p=polyfit(t,C30,4)

   0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050

The problem is that when I plot(t,C30) and plot(p) I get totally different
curves, am I missing somethiing???

Yes, I believe it is safe to say that you are missing something.  Look at vector that is returned from polyfit that you print out:
p=
   0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050

these are the coefficients of the polynomial (see help polyfit for more explanation).  And the "curve" from plotting that vector is just the coefficients wrt their index.  The function you're probably looking for is polyval (help polyval for info) so that you can evaluate the fitted curve at the values of x that you want.

Hope this helps,
James Sherman Jr.


Polyfit can do that

[P, S] = polyfit (X, Y, N)

S.yf  should have the fitted Y values for your x values.

True, but it does not show how bad the fit is. These datapoints aren't likely to fit a polynomial model, and to see it it helps to see the actual fitted polynomial with more resolution than the 9 points provided:

C30 = [ 0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990]
t      = [ 1.0000      1.5000       2.0000       3.0000      5.0000       7.0000    10.0000     13.0000     18.0000]

plot(t,C30,'o',x=1:.1:20,polyval(polyfit(t,C30,4),x))

which shows nicely the deficiency of the fourth-order polynomial, by creating artifacts where the data has none.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]