matlab实现灰色预测

刚看了关于灰色模型预测的一篇文章
记录一下代码实现步骤
这是关于GM的代码
这个例子是关于寻找下一个表格数据小于320

clc,clear 
a=[390.6,412,320,559.2,380.8,542.4,553,310,561,300,632,540,406.2,313.8,576,587.6,318.5]'; 
t0=find(a<=320); 
t1=cumsum(t0);n=length(t1); 
B=[-0.5*(t1(1:end-1)+t1(2:end)),ones(n-1,1)];Y=t0(2:end); %重要的一步
r=B\Y 
y=dsolve('Dy+a*y=b','y(0)=y0'); 
y=subs(y,{'a','b','y0'},{r(1),r(2),t1(1)}); 
yuce1=double(subs(y,'t',[0:n+1]) )%使用double函数进行计算
yuce1
digits(6),y=vpa(y) %为提高预测精度,先计算预测值,再显示微分方程的解  y是按累加之后的数列来拟合的所以还要减去
yuce=diff(yuce1); 
yuce=[t0(1),yuce];%前两个数的累加没法分离出来第一项就把原来的第一项再插进去
yuce %这里就是预测值了

你可能感兴趣的:(笔记)