MATLAB Answers


Why do these two different way to find slope give different results?

Luqman Saleem さんによって質問されました 2019 年 5 月 20 日
最新アクティビティ Luqman Saleem さんによって コメントされました 2019 年 5 月 21 日
I have the following data
x = [14 18 22 26];
y = [8.5588 14.3430 21.6132 30.3740];
and I want to find the slope of this data when it is plotted on a loglog() plot. I tried two methods:
First method:
then go to tools > basic fitting > linear fitting
the result is
y = p1*x + p2
p1 = 1.8179
p2 = -17.636
Norm of residuals =
slope = 1.8179
Second method:
coeffs = polyfit(log(x),log(y),1);
slope = coeffs(1);
by this method
slope = 2.0462
Why is it so? The slope that I find by using first method is closer to the experimental results. Is there any way to do the first method through code instead of GUI?

  2 件のコメント

Luqman Saleem 2019 年 5 月 20 日
thank you for a quick response. is there anyway to access "best fitting" GUI's resutls through command line? I have a big data and can't do fitting one by one.
Adam Danz
2019 年 5 月 20 日
Sorry, I removed my comment because it only pointed out the obvious. Check out my answer below and let me know if there are any more questions.

サインイン to comment.

1 件の回答

回答者: Adam Danz
2019 年 5 月 20 日
編集済み: Adam Danz
2019 年 5 月 21 日

The basic fitting tool merely calls polyfit() using your x and y values (see link for more info).
You can get the same coefficients by calling polyfit directly.
x = [14 18 22 26];
y = [8.5588 14.3430 21.6132 30.3740];
coefs = polyfit(x,y,1);
%coefs = [1.8179 -17.636] % Same results as using fitting tool.
Then you can add a reference line by using refline().
hold on
rh = refline(coefs(1),coefs(2));
rh.Color = 'r';
As you'll see after plotting the reference line, it does not align with your data in log space.

  1 件のコメント

Luqman Saleem 2019 年 5 月 21 日
yes. you are right. thank you.

サインイン to comment.

Translated by