logfit(X,Y,graphType), where X is a vector and Y is a vector or a
matrix will plot the data with the axis scaling determined
by graphType as follows: graphType-> xscale, yscale
loglog-> log, log
logx -> log, linear
logy -> linear, log
linear -> linear, linear
A line is then fit to the scaled data in a least squares
sense.
See the 'notes' section below for help choosing a method.
logfit(X,Y), will search through all the possible axis scalings and
finish with the one that incurs the least error (with error
measured as least squares on the linear-linear data.)
Notes:
A power law relationship
[slope, intercept] = logfit(x,y,'loglog');
yApprox = (10^intercept)*x.^(slope);
An exponential relationship
[slope, intercept] = logfit(x,y,'logy');
yApprox = (10^intercept)*(10^slope).^x;
A logarithmic relationship
[slope, intercept] = logfit(x,y,'logx');
yApprox = (intercept)+(slope)*log10(x);
A linear relationship
[slope, intercept] = logfit(x,y,'linear');
yApprox = (intercept)+(slope)*x;
Jonathan C. Lansey (2021). Power Law, Exponential and Logarithmic Fit (https://www.mathworks.com/matlabcentral/fileexchange/29545-power-law-exponential-and-logarithmic-fit), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Great, thank you
I have a small question, how can I display the intercept and slope in the plot In the power law
Excellent! Thank you.
Sir I want to find the value of a and b so plz suggest the code for this curve
@ashley, the b is the slope output. exp(intercept) gives a.
Great stuff. Do you know of a way to input powerlaw data and to determine the b in y = a x^b ?
Jonathan C. Lansey, you sir are a legend!
Many thanks for this function.
Would the be any way to extend the fitted line to meet x-axis at all?
Its not vital, merely for display purposes.
Many thanks anyway.
Nath
Perfect, exactly what I needed!
Great!
Thank you for your function!!
very usefull,,
by the way, how to make non linear curve fit using custom equation when plot on log scale?
thx
Thanks a lot! Very helpful
Just what the Dr. ordered. Thank You.
Awesome!
Saviour !!!!!!!!!!
Nice.
I use:
% y = a x^b
function [a b] = my_powerLawFit(y, x)
logx=log(x);
logy=log(y);
p=polyfit(logx,logy,1);
b=p(1);
loga=p(2);
a=exp(loga);
end
Extremely cool!