Curve to fit a loglog graph and its equation

4 次查看(过去 30 天)
Khishendran Mahendran
Khishendran Mahendran2020-8-23
i have write a code for my given set of data and could not figure how to get a curve line to fit it with an equation
this is the code i have writen with the data points
y=[0.02521 0.47575 0.035403 0.03479 0.025683 0.025397 0.021046];
x=[0 0.5 1 1.5 2 2.5 3];
y=y./1000;
loglog(x.',y.','o')
hold on
f=polyfit(log(x),log(y),1);
fity=polyval(f,log(x));
loglog(x,exp(fity))
  1 个评论
Sam Chak
Sam Chak 2020-8-23
There are only 7 points, so probably insufficient to produce a good fitting. Try to obtain more data points.
This is just one of many possible equations to fit the 7 points:
Goodness of fit:
  • SSE: 0.0001094
  • R-square: 0.9994
  • Adjusted R-square: 0.9992
  • RMSE: 0.004677

请先登录,再进行评论。

回答(1 个)

Thiago Henrique Gomes Lobato
There are some issues with your fit. First, log(0) is not defined, so what you expect to become from a fit that uses log(0)? If you really want to use this point to a logarithmic fit you have to make some consideration like calculating log(x+eps) instead of log(x), although this will unlikely lead to a reasonable model. Second, what type of function you think you have? The second y value has a way higher value than all others, it is an outlier/measurement error that needs to be removed? Or you are modelling a probability function and there is the peak? If so, why use a 1 degree exponential function and not a probability function such as a gaussian to model it?
If you don't define what type of model you're expecting to have it doesn't make much sense to make a fit on it.

Community Treasure Hunt

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

Start Hunting!

Translated by