# Fitting a nonlinear curve to a small dataset

2 views (last 30 days)
Imran on 15 Sep 2020
Commented: Imran on 17 Sep 2020
My data is
Data = ...
[2.5 -14.741408
3.0 -14.765364
4.0 -15.854609
5.0 -16.058246
6.0 -16.103032
7.0 -16.595257];
and looks like this
I want to fit a single curve to this and get the equation of that curve. How may I do this?

Image Analyst on 15 Sep 2020
Edited: Image Analyst on 15 Sep 2020
Any idea of what curve you want to fit it to? Like a polynomial, or an exponential decay (demo attached), or something else?
That said, the formula you get, whatever it is, will be virtually worthless in it's predicting ability of points not in your training set. I mean with so few and so noisy data, whatever parameters you come up with could be vastly different with a different training set. You need to get a lot more points. For example if I put in 3.5, I could get almost anything between -15 and -15.6 depending on the formula. In other words, you train with that set and you might get -15, but then you take some more measurements that are nominally the same but since there's a high amount of noise you'd get a different formula and now you might get -15.3 or -15.6. You couldn't really trust the prediction. Again, get more points!
Test4.m is the attached demo with your data plugged in, and it gives this:
Imran on 17 Sep 2020
Hmm, I understand that I neither can change my training set nor the best fit curve. You have helped a lot. Thank you.

esat gulhan on 15 Sep 2020
x=[2.5 3.0 4.0 5.0 6.0 7.0];
y=[-14.741408 -14.765364 -15.854609 -16.058246 -16.103032 -16.595257];
s=pchip(x,y) %you can use pchip or cape instead of pchip
xx=linspace(2.5,7,100);yy=ppval(s,xx)
plot(xx,yy,'LineWidth',1.5);grid on;hold on;plot(x,y,'o')
ppval(s,3) %if you want to know y when x 3 this code works, if you want y when x 5 you should enter 5
ppval(s,5) %if you want y when x 5 you should enter 5 like that
esat gulhan on 15 Sep 2020

R2015a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!