⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huisegm.m

📁 灰色预测GM(1
💻 M
字号:
function GM=huise(data,N)
T=length(data); 
X0=data;
for i=2:T
   X1(1)=X0(1);
   X1(i)=X1(i-1)+X0(i);              %用AGO生成一阶累加生成模块
end
for i=1:T-1
   M(i)=-(0.5*(X1(i)+X1(i+1)));
end
B=zeros(T-1,2);                      %构造累加矩阵B
for i=1:T-1
     for j=1:2
         if j<2
            B(i,j)=M(i);
         elseif j>1
            B(i,j)=1;
         end
     end
end
save B B;
for i=2:T                          %构造常数项向量Y
    Y(i-1)=X0(i);
end
HCS=inv(B'*B)*B'*Y';               %用最小二乘法求灰参数HCS
H=HCS';
for i=1:T+N                        %计算出累加序列
XR1(i)=(X0(1)-H(2)/H(1))*exp(-1*H(1)*(i-1))+H(2)/H(1);
end
save XR1 XR1;
A1=X0(1)-H(2)/H(1)               %模型方程系数
A2=-1*H(1)
A3=H(2)/H(1)
save fangcheng A1 A2 A3;
for i=2:T+N                     %还原计算出预测值
        K(i)=XR1(i)-XR1(i-1);
end
GM=K; 
save GM GM;
e0(1,T-1)=zeros;  
for i=1:T-1                      %求残差值e0                    
e0(i)=data(i+1)-K(i+1);
end
save e0 e0;

X_average=mean(data)              %求原始数据均值x0均
s1=std(data)                     %求原始数据的标准差
s2=std(e0)
c=s2/s1                          %计算方差比c,c<0.35为好
for i=1:T-1                       %计算滚动残差et数组
    et(i)=e0(i)/K(i+1);
end
save et et;
    et_average=mean(et)         %求残差的均值注意是T-1
p=1-abs(et_average)             %计算小误差概率p,p>0.95为好
save pra X_average s1 s2 c p;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -