How to fit curve to see the scaling
4 次查看(过去 30 天)
显示 更早的评论
Hi,
I would like to see the scaling (\alpha) of my curve f(x,y): x^\alpha
Thus, I need to fit my data to a curve but I cannot use the function polyfit as the value of \alpha could be any value between 0 and 2, and I receive the error message:
Index in position 2 is invalid. Array indices must be positive integers or logical values.
Is there any direct method to do this in Matlab?
Thanks in advance!
4 个评论
Rik
2019-1-9
What is the exact code that you are currently using? Because you should be fitting your x-y data to something like this
fitfun=@(x,alpha) x.^alpha;
The error doesn't look like you are doing a curve fit.
采纳的回答
Rik
2019-1-9
That code doesn't work, because your data is not a polynomial. It doesn't make sense to fit to a polynomial if your data is not. The code below will generate some example data, perform the fit, and plot the result.
In this case you could also make an estimation of alpha by taking the x-base log of y. You'll probably have to do that in a loop.
%generate example data
x=linspace(0,20,30);
noise=(rand(size(x))-0.5)*5;
y=x.^1.7 + noise;
%define function
fitfun=@(alpha,x) x.^alpha;
%perform fit
fitobject = fit(x(:),y(:),fitfun,'StartPoint',1);
fitted_alpha=fitobject.alpha;
%plot in a clean figure
figure(1),clf(1)
plot(x,y,'*b',x,fitfun(fitted_alpha,x),'r')
6 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear and Nonlinear Regression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!