Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Want to make linear fitting and plot both graph on the same curve

Asked by Phong Pham

Phong Pham (view profile)

on 19 Mar 2013
Accepted Answer by bym

bym (view profile)

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

1 Comment

Daniel

Daniel (view profile)

on 20 Mar 2013

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.

Phong Pham

Phong Pham (view profile)

Products

No products are associated with this question.

1 Answer

Answer by bym

bym (view profile)

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')

0 Comments

bym

bym (view profile)

Contact us