Want to fit linear curve on my data.
1 view (last 30 days)
Show older comments
I have x, y data
x=[0;0.100000000000000;0.200000000000000;0.300000000000000;0.400000000000000;0.500000000000000;0.600000000000000];
y=[4.67178152947921e-06;4.67353333624452e-06;4.70560728038426e-06;4.74873086195845e-06;4.77333265701103e-06;4.84630647442201e-06;4.87015810633671e-06];
I want to plot x vs y and want to y-axis in log scale
plot(x,y)
set(gca,'YScale','log')
hold on
Note: x data starts from 0
Now I want to fit a line and show the slope of that curve fitting line + original curve
p=polyfit(x,(y),1);
q=polyval(p,x);
plot(x,q).
It seems to be not right because the fit line isn't straight ( it likes power fit or exponential) . Note log scale ( not log(data))
Please helps. Thanks
2 Comments
the cyclist
on 18 Mar 2013
It would be tremendously helpful if you included a small sample of your data that exhibits the problem, so that we could run your code and see the results. Your statement that it "seems to be not right" is not quite enough.
Accepted Answer
Daniel Shub
on 18 Mar 2013
Edited: Daniel Shub
on 20 Mar 2013
I don't like working on log scales, I would rather take the log transform of my data
x=[0;0.100000000000000;0.200000000000000;0.300000000000000;0.400000000000000;0.500000000000000;0.600000000000000];
y=[4.67178152947921e-06;4.67353333624452e-06;4.70560728038426e-06;4.74873086195845e-06;4.77333265701103e-06;4.84630647442201e-06;4.87015810633671e-06];
xx = x;
yy = log(y);
plot(xx, yy, '*');
lsline;
p = polyfit(xx, yy,1);
text(max(xlim), max(ylim), ['Slope: ', num2str(p(1))], 'HorizontalAlignment', 'Right', 'VerticalAlignment', 'Top')
set(gca, 'YTickLabel', 10^6*exp(get(gca, 'YTick')))
4 Comments
Daniel Shub
on 20 Mar 2013
I got the output of polyfit wrong (I thought the first coefficient was the intercept). I changed the code. I also changed the scaling of the ticks. You can set them to be whatever you want.
More Answers (1)
Jan
on 19 Mar 2013
When you want a line in the logspace diagram, you need an exponential fit on the data. Or build the log of the data at first and fit the line afterwards.
0 Comments
See Also
Categories
Find more on Linear and Nonlinear Regression in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!