i want to do linear regression for : log(vp)=A-B/(T+273.15) !!
vp = [ 1 5 10 20 40 60 100 200 400 760]
T = [-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1]
y = log10(vp);
x = 1./(T+273.15);
% fit the polynomial
p = polyfit(x,y,1)
% p = -2035.33 8.75201
y=polyval(p,x)
plot(T,y,'or',T,vp,'b')
xlabel('T (C)')
ylabel('vp (mm Hg)')

 Akzeptierte Antwort

Star Strider
Star Strider am 8 Feb. 2021

0 Stimmen

Try this:
figure
plot(T,vp,'or',T,10.^y,'b')
xlabel('T (C)')
ylabel('vp (mm Hg)')
The rest of the code is unchanged.

2 Kommentare

Rand Ardat
Rand Ardat am 8 Feb. 2021
thank you!
Star Strider
Star Strider am 8 Feb. 2021
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

the cyclist
the cyclist am 8 Feb. 2021
Bearbeitet: the cyclist am 8 Feb. 2021

0 Stimmen

You should plot
plot(T,10.^y,'or',T,vp,'b')
because you did the regression on log10(y), not y itself.
vp = [ 1 5 10 20 40 60 100 200 400 760]
T = [-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1]
y = log10(vp);
x = 1./(T+273.15);
% fit the polynomial
p = polyfit(x,y,1)
% p = -2035.33 8.75201
y=polyval(p,x)
plot(T,10.^y,'or',T,vp,'b')
xlabel('T (C)')
ylabel('vp (mm Hg)')
Also, it looks like you plotted the data as a line, and the fit as individual circles. I expect you want the opposite, which is more conventional.

Kategorien

Mehr zu Linear and Nonlinear Regression finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by