formula代表拟合的公式,如Y~X,则对因变量Y和自变量X作线性拟合拟合模型为 y=a+bx ,如Y 0+X或Y X+0则除对因变量Y和自变量X作线性拟合外,还规定改直线必过原点及拟合模型为 y=x 。
lm对象即lm函数返回的值,其属性包括
常用的有 coefficients , residuals 和 fitted.values ,分别表示拟合的得到的各系数的值、残差和预测值。
可以看出该拟合曲线为y=0.52805925 -0.02797779x
其他值的调用,包括p值,给定x预测的y值,拟合系数R方等需要通过summary函数调用
也可以直接通过 summary(line.model) 打印出大部分与回归直线相关的一些结果
clcclearclose allU=[1.45,1.85,2.02,2.2,2.67,2.98]
V=[200,400,500,600,800,1000]
H=[25.6,43.5,51.4,60.2,79.6,95.2]
[AX,H1,H2]=plotyy(U,V,U,H,'plot')
set(H1,'Marker','o','line','none','color','k')
set(H2,'Marker','*','line','none','color','r')
legend('容积','实际高度')
xlabel('电压值/V')
yl1=get(AX(1),'Ylabel')
set(yl1,'string','容积/L')
yl2=get(AX(2),'Ylabel')
set(yl2,'string','实际高度/cm')
p1=polyfit(U,V,1)
p2=polyfit(U,H,1)
VV=p1(1)*U+p1(2)
HH=p2(1)*U+p2(2)
hold on
[AX,HH1,HH2]=plotyy(U,VV,U,HH)
set(HH1,'color','k')
set(HH2,'color','r')
clc
disp(['V=',num2str(p1(1)),'*U',num2str(p1(2))])
disp(['H=',num2str(p2(1)),'*U',num2str(p2(2))])
运行结果
V=513.0775*U-542.8718
H=45.1123*U-39.7716
线性拟合如下:
------------------------------------------------------------------
x=[0 20 40 60 100 130 160 190]
y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896]
a=polyfit(x,y,1)
xi=0:0.001:200
yi=polyval(a,xi)
plot(x,y,'go','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)
xlabel('深度/m','fontsize',16)
ylabel('温度/℃','fontsize',16)
axis([0 200 12 20])
hold on
plot(xi,yi,'linewidth',2,'markersize',16)
legend('原始数据点','拟合曲线')
sprintf('直线方程:Y=%0.5gxX+%0.5g',a(1),a(2))
-----------------------------------------------------------------
指数拟合如下:
-----------------------------------------------------------------
先定义函数:
function Y=nhfun(b,x)
Y=b(1)*exp(b(2)*x)+b(3)
在运行程序:
x=[0 20 40 60 100 130 160 190]
y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896]
x0=[0,1,0] %设置初始值
b=lsqcurvefit(@nhfun,x0,x,y)
Xi=0:0.001:200
Yi=b(1)*exp(b(3)*Xi)+b(2)
plot(x,y,'cp','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)
hold on
plot(Xi,Yi,'linewidth',2,'markersize',16)
legend('原始数据点','拟合曲线')
sprintf('曲线方程:Y=%0.5g+e^(%0.5gxX)+(%0.5g)',b(1),b(2),b(3))
--------------------------------------------------------------
!!!曲线方程程序运行时会报错,是因为你的X数据中有一个为0,这个不影响结果的
图每次只能发一张,所以我发到你邮箱哈
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)