MATLAB Answers

Fit a curve to a nonlinear 1D data

5 views (last 30 days)
Abhishek Singh
Abhishek Singh on 4 Oct 2020
Commented: Sindar on 5 Oct 2020
Hello,
I have a monthly rainfall data for a year and it is quadratic with months. I want to get the approximate equation it follows. I tried Excel and other options and the results are also okay but I was thinking if MATLAB could give a more precise equation for me. After that, I will use that equation for another variable. Below is shown the monthly data. I just want to fit a curve to it and get the equation for my further use. Thank you very much.
18.92, 21.6, 27.4, 43.07, 85.66, 230.12, 347.02, 289.74, 197.32, 95.32, 39.5, 19

  0 Comments

Sign in to comment.

Answers (1)

Sindar
Sindar on 4 Oct 2020
x=1:12;
y=[18.92, 21.6, 27.4, 43.07, 85.66, 230.12, 347.02, 289.74, 197.32, 95.32, 39.5, 19];
% fit to a quadratic (degree 2) polynomial
p = polyfit(x,y,2);

  4 Comments

Show 1 older comment
Sindar
Sindar on 4 Oct 2020
% half-month steps
x1 = linspace(0,12,25);
% evaluate at these points
y1 = polyval(p,x1);
figure
% plot original data with stars
plot(x,y,'*')
% add fitted data as lines
hold on
plot(x1,y1)
hold off
Abhishek Singh
Abhishek Singh on 5 Oct 2020
@Sindar, thank you for commenting and answering. I know that I have mentioned it is quadratic but from the fit graph it looks like more of a polynomial of higher order. So I tried polyfit(x,y,6) and got the values of p. Would you advise any other function than polyfit() to give more precise results with lesser co-efficients in p?
Sindar
Sindar on 5 Oct 2020
what do you mean by "lesser co-efficients in p"?
Also, with only 12 data points, I'd be wary of fitting with high-order polynomials (too many parameters, likely to overfit and result in spikes between sampled points)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!