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:
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.
|