时间序列用MATLAB最小二乘拟合

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:43:47
年份 2003 2004 2005 2006 2007 2008
观测值68664800 69071220 73317128 81746580 88924831 93049977
以上是某地的电力负荷值,能给出个用最小二乘拟合出直线的程序不,万分感谢!

x=[2003 2004 2005 2006 2007 2008];
y=[68664800 69071220 73317128 81746580 88924831 93049977];
p=polyfit(x,y,1); % 多项式最小二乘拟合,1次为直线
xx=2002:2009; % 直线的横坐标。因为是直线,取2点就可以,用多个点也没问题。曲线的话取点越多越平滑。
yy=polyval(p,xx); % 直线的纵坐标
plot(x,y,'o',xx,yy); % 画图,原始数据用圈,直线用线。
legend('原始数据','拟合直线',0) % 图示
xlabel('年份')
ylabel('观测值')
title('某地电力负荷')

>>x=2003:2008;

>>y=[68664800  69071220  73317128    81746580     88924831      93049977];

>>plot(x,y)

从图形可以看出是近似是一个直线,用一次拟合

>>a=polyfit(x,y,1)

a =

  1.0e+010 *

    0.0005   -1.0803

>>hold on

>>Y=a(1)*x+a(2);

>>plot(x,Y,'r:');

图像如下: