![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231600/image.png)
Plot best fit line in log-space & get slope
28 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to determine the slope of the best-fit line in log space, and plot the best-fit line as a visual check. It needs to be a line, not a curve (I understand that the misfits could be very large in logspace). Below is an example with xy data and polyfit attempts (and plot included). Thanks for any help
x = [7.94, 16.23, 32.92, 66.8, 135.52, 274.93, 557.78, 1131.59, 2295.72, 4657.46];
y = [134000, 102000, 31000, 11000, 2600, 990, 40, 10.41, 3.48, 1.037];
scatter(x,y, 'DisplayName', 'MyData')
set(gca,'xscale','log')
set(gca,'yscale','log')
hold on
grid on
box on
axis equal
p = polyfit(log10(x), log10(y), 1);
z = polyval(p, log10(x));
loglog(x, log10(z), 'DisplayName', 'Try1');
loglog(x, z, 'DisplayName', 'Try2');
z2 = polyval(p, x);
loglog(x, z2, 'DisplayName', 'Try3');
loglog(x, log10(z2), 'DisplayName', 'Try4');
legend
![Capture.JPG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231598/Capture.jpeg)
0 Commenti
Risposta accettata
Star Strider
il 27 Lug 2019
You are regressing ‘log10(x)’ against ‘log10(y)’ so you need to give the appropriate information to both polyfit and polyval:
Bp = polyfit(log10(x), log10(y), 1);
Yp = polyval(Bp,log10(x));
figure
plot(log10(x), log10(y), 'pg')
hold on
plot(log10(x), Yp, '-r')
hold off
grid
producing this plot:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231600/image.png)
The slope is -2.0182.
4 Commenti
Più risposte (1)
newbie9
il 3 Ago 2019
1 Commento
Angie Brulc
il 7 Mar 2022
Hello,
I'm a random student working on processing data for a lab and just wanted to let you know this was incredibly helpful to me. Thank you!
Vedere anche
Categorie
Scopri di più su Get Started with Curve Fitting Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!