文档介绍:数据处理
;
x=[-200 -100 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300]
y=[- - 0 ]
n=16;
sx=sum(x);
sy=sum(y);
sxx=sum(x*x');
sxy=sum(x*y');
k=(n*sxy-sx*sy)/(n*sxx-sx*sx);
a0=(sxx*sy-sx*sxy)/(n*sxx-sx*sx);
sprintf('y=%d+(%d)*x',a0,k)
x=-200:100:1300;
y=a0+k*x;
plot(x,y) %绘出曲线
运行结果:
ans =
y=-001+(-002)*x
,对前面的结果进行验证;
x=[-200 -100 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300]
y=[- - 0 ]
p=polyfit(x,y,1); vpa(poly2sym(p),4)
x0=-200:100:1300;
y0=polyval(p,x0);
subplot(2,1,1)
plot(x,y,'*r',x0,y0,'-b')
xlabel('x');ylabel('y');title('一阶线性拟合');grid
subplot(2,1,2)
plot(x0,y0,'-b')
xlabel('x');ylabel('y');title('原理图与线性拟合对比');grid
运行结果:
ans =
*x +
经过与(1)中结果的对比,证明了程序的正确性。
,并给出线性拟合的误差分析;
x=[-200 -100 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300]
y=[- - 0 ]
p=polyfit(x,y,2);vpa(poly2sym(p),4)
x0=-200:100:1300;
y0=polyval(p,x0);
subplot(2,1,1)
plot(x,y,'*r',x0,y0,'-b'),legend('拟合曲线','样本点