20181024更新:
MatlabR2016b等以上版本会运行出错,第35行代码更改为:exchange=diff(double(forecast1));
--------------------------------------------------------------------------------------------------------------------------------------------------------
GM(1,1)是灰色模型中较为常见的模型,下面是程序,x0是数据,可更改。
之前编辑忘了说了,一般就是给定一组数据,自己根据这些数据拟合一个灰色模型,底下的代码可以得到该模型对应的公式。
代码:
% GM(1,1)
% 程序有详尽注释
clc;
clear all;
x0=[92.810 97.660 98.800 99.281 99.537 99.537 99.817 100.000];
n=length(x0);
% 做级比判断,看看是否适合用GM(1,1)建模
lamda=x0(1:n-1)./x0(2:n);
range=minmax(lamda);
% 判定是否适合用一阶灰色模型建模
if range(1,1)<exp(-(2/(n+2)))| range(1,2)>exp(2/(n+2))
error('级比没有落入灰色模型的范围内,不适合用GM(1,1)建模');
else
% 空行输出
disp(' ');
disp('可用GM(1,1)建模');
end
%做AGO累加处理