灰色预测代码的应用

灰色预测模型是通过少量的、不完全的信息,建立数学模型做出预测的一种预测方法。是基于客观事物的过去和现在的发展规律,借助于科学的方法对未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。

下面是一个运用灰色预测的例子的代码

x=g(:,2); //此处的x是直接从excel导入matlab的,所以是table格式,此处摘取了第二列,g为导入的excel表的名字
x1=table2array(x);//将table格式数据转化为矩阵,一定要转换,不然在后续代码中会报错
x1(find(isnan(x1)==1)) = 0;//将原始数据中为空的部分转化为0,此处默认正常数据不会有为0的情况出现
x1(x1(:,1)==0,1) = mean(x1(:,1));//进行数据处理,将为0的部分用所有数据的平均值代替
x3=zeros(1,length(x1)+1);//建立存储预测值的矩阵,此处令其全部为0

//循环进行预测,每次采用六个数来进行预测
for a=7:length(x1)
t=f(x1(a-5:a,1));
t1=str2double(t); //将输出的字符串类型转化为double数据
x3(1,a+1)=t1;
end
x3=x3’;

//灰色预测的函数实现,参考的是网上已有的代码

function z= f(y)
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
    yy(i)=yy(i-1)+y(i);
end
B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;
    B(i,2)=1;
end
BT=B';
for j=1:(n-1)
    YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=1;
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
%plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
    det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
%disp(['percent absolute error is: ',num2str(det),'%']);
    z=num2str(ys(n+1:n+t_test));
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值