MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Phong Pham on 19 Mar 2013

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 have y-axis in log scale ( NOT log the y data)

this is how I make y -axis with 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

this is for fitting line.

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) because it does not start at Initial point . Note log scale ( not log(data))

Please helps. Thanks

*No products are associated with this question.*

Answer by bym on 19 Mar 2013

Accepted answer

you are going to have to transform your 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]; semilogy(x,y,'bo') c = polyfit(x,log(y),1) p = polyval(c,x) hold semilogy(x,exp(p),'g')

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/67829#comment_137696

This is a duplicate of http://www.mathworks.com/matlabcentral/answers/67684-want-to-fit-linear-curve-on-my-data. Please do not post duplicates, it tends upsets the people who are likely to provide answers.