关于这个模型的介绍不想多说了,只是一个娱乐而已。下面是所有的代码,直接粘到你的M文件里面,然后跑就是了。 一分钱不收。
function [ simulation,params] = GM( org )
n=length(org);
%一次累加
for i=1:n
acc(i)=sum(org(1:i));
end
%计算背景值
for i=1:(n-1)
zk(i)=0.5*(acc(i)+acc(i+1));
end
%求解参数
params=polyfit(zk,org(2:end),1);
%计算模拟值
for i=1:n
if i==1
simulation(i)=org(1);
else
simulation(i)=(org(1)+params(2)/params(1))*(1-exp(-params(1)))*exp(params(1)*(i-1));
end
end
plot(1:n,org,'-o',1:n,simulation,'-*');
legend('原始序列','拟合序列');
细心的朋友应该会注意到一件事情:灰色预测模型里面不是有那么多矩阵运算吗,在这里怎么没有? 如果你跑了程序又会发现,这个程序计算出来的结果,跟任何一本书上写的结果完全一样。这是为啥嘞?
如果再细心点,会看到我这里获取参数的代码 : para