To fit power law

7 ビュー (過去 30 日間)
aneps
aneps 2014 年 6 月 16 日
編集済み: John Kelly 2015 年 12 月 17 日
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.

回答 (1 件)

Miroslav Balda
Miroslav Balda 2014 年 6 月 16 日
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

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by