mygm.m

来自「用matlab实现灰色序列预测GM(1,1)」· M 代码 · 共 36 行

M
36
字号
x0=[900 970 1030 1120 1120]; %原始序列
[m,n]=size(x0);
a_l=exp(-2/(n+1))            %计算级比覆盖范围
a_h=exp(2/(n+1))
for i=2:n
    q(i)=x0(i-1)/x0(i);      %计算实际级比
end
q
for i=1:n                     %计算一次累加序列
    x1(i)=sum(x0(1:i));       
end
for k=1:n-1                     
    z1(k)=1/2*x1(k)+1/2*x1(k+1);
end
Y=x0(2:n)';                    %得出Y矩阵
B=[];
B(:,1)=-z1';
B(:,2)=ones(1);                 %得出B矩阵
aU=(inv(B'*B))*B'*Y;            %计算a,U 
a=aU(1);
U=aU(2);
for i=1:n+2 
    xx1(i)=(x0(1)-U/a)*exp(-a*(i-1))+U/a; %解偏微分方程
end
for i=1:n-1+2
    xx0(i+1)=xx1(i+1)-xx1(i);           %一次累减,得出预测值
end

for i=2:n                               %计算残差
    e(i)=x0(i)-xx0(i);
end
ee=e(2:n);
ee=ee+2*abs(min(ee));                    %对残差进行正化处理


⌨️ 快捷键说明

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