• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: Matlab
  • 标签: matlab  

资源简介

基于matlab灰色模型GM(1,1)预测数据,通,然后对比真实值和预测结果,求出误差,包含残差检验,关联度检验和后验差检验。

资源截图

代码片段和文件信息

clcclear
y=[15.19 15.91 16.88 18 16.85 17.12]; %数据1行6列的矩阵
n=length(y); % 计算出数据y长度
disp(‘级比检验‘)
lambda=y(1:end-1)./y(2:end);
range=minmax(lambda)
range1=[exp(-2/(n+1))exp(2/(n+1))]
yy=ones(n1);  % n行1列的1矩阵
for i=2:n    %for循环 累加数据
yy(i)=yy(i-1)+y(i);
end   %原始数据累加
B=ones(n-12);  % n-1行2列的1矩阵
for i=1:(n-1)  %for循环 计算B矩阵 详见灰色预测模型ppt
B(i1)=-(yy(i)+yy(i+1))/2;
B(i2)=1;
end
BT=B‘;  % ‘表示转置 行列互换
for j=1:(n-1)   %相当于取y矩阵的后面九个数,其实可以写的更简单,YN=y(:2:10);
YN(j)=y(j+1);
end
YN=YN‘; %转置
A=inv(BT*B)*BT*YN; %ppt中的公式
a=A(1);  % 上面计算出来的a是个矩阵,取A矩阵的第一个数
u=A(2);% 取第二个
t=u/a;  
t_test=input(‘输入预测个数‘);%预测后续数据
i=1:t_test+n;  % 相当于i是1到(t_test+n)的数列,间隔为1
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; %数学公式详见ppt  yys为预测数据
yys(1)=y(1); %将y矩阵的第一个数字赋给yys矩阵的第一个位置
for j=n+t_test:-1:2  %for循环 将预测数据yys还原(预测出来的是累加数据)
ys(j)=yys(j)-yys(j-1);
end
x=1:n; %x为1到n的数列
xs=2:n+t_test; % xs为2到n+t_text的数列
yn=ys(2:n+t_test); %将ys矩阵第2到n+t_text的数赋值给yn
xs=[1xs];

评论

共有 条评论