To fit power law

9 vues (au cours des 30 derniers jours)
aneps
aneps le 16 Juin 2014
Modifié(e) : John Kelly le 17 Déc 2015
I want to fit power law on my data (Data attached here - Data.txt file). I have the following code:
A=load('Data.txt')
ft=fittype(@(m,b,x)b*x.^m);
f = fit(A(:,1),A(:,2),ft)
figure
plot(f,':g',A(:,1),A(:,2),':b')
But this is not fitting my data with the power law. Could you please check what is the problem? I guess, my data is not starting from zero. I think, I have to normalize it(I am not sure). When I use fitoptions to normalize, it is not working!
I tried to fit by taking log on both sides because y=A*x^m log(y)=log(A)+m*log(x)
ft=fittype(@(a,m,x)log(a)+m*log(x));
[f gof] = fit(A(:,1),log(A(:,2)),ft)
still it is giving the wrong fit!!! just a horizontal straight line! Please help me.

Réponses (1)

Miroslav Balda
Miroslav Balda le 16 Juin 2014
If you plot the given vectors by the statement semilogy(A(:,1),A(:,2),':o'),you observe that the pure power function does not fit well the measured data, because the plotted points are not on a straight line (in semilogy axes). It would need more complicated function. Mira

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by