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

📄 gm_1_1.m

📁 利用MATLAB编写了GM(1
💻 M
字号:
function [F_Mat,New_Mat,Para_A,Para_B]=GM_1_1(Mat,q,Length_T)
%q:表示生成系数
n=length(Mat);  %得到数组X的元素个数
%1.进行数据的的检验与处理,可容覆盖区间(X1,X2)
X01=exp(-2./(n+1));X02=exp( 2./(n+1));
Inc_V=0;                         %定义矩阵的增量 
p=zeros(1,n-1);
for j=1:100000
    for i=2:n
        p(i)=Mat(i-1)/Mat(i); %级比p
    end
    if max(p(2:n)<=X01)|min(p(2:n)>=X02)
        Mat=Mat+0.01;
        Inc_V=Inc_V+0.01;
    else
        break,
    end
end
%-------------------------------------------------------------------------%
%AGO的生成数列为:
X1=zeros(1,n);  %数列X1的均值数列为; q:表示生成系数
%生成均值(mean)数列 Z;计算向量U的参数
C=0;D=0;E=0;F=0;
for i=1:n
    for j=1:i
        X1(i)=X1(i)+Mat(j);
    end
    if i>=2
        Z(i)=q*X1(i)+(1-q)*X1(i-1);
        C=C+Z(i);D=D+Mat(i);
        E=E+Z(i)*Mat(i);F=F+Z(i)*Z(i);
    else
        continue,
    end
end
Para_A=(C*D-(n-1)*E)/((n-1)*F-C^2);
Para_B=(D*F-C*E)/((n-1)*F-C^2);
%-------------------------------------------------------------------------%
F_Mat=zeros(1,n);%矩阵初始化
F_Mat(1)=Mat(1)-Inc_V;
for k=1:n-1
    X1(k+1)=(Mat(1)-Para_B/Para_A)*exp(-Para_A*k)+Para_B/Para_A;
    F_Mat(k+1)=X1(k+1)-X1(k)-Inc_V;
end
F_Mat;
%-------------------------------------------------------------------------%
%预测数据部分
Mat_1=zeros(1,n+Length_T);
for k=1:n+Length_T
    if k==1
       Mat_1(k)=X1(1); 
    else
        Mat_1(k)=(Mat(1)-Para_B/Para_A)*exp(-Para_A*(k-1))+Para_B/Para_A;
    end
end
 
New_Mat=zeros(1,n+Length_T);
for k=1:n+Length_T
    if k==1
        New_Mat(1)=Mat(1);
    else
        New_Mat(k)=Mat_1(k)-Mat_1(k-1);
    end
end
New_Mat=New_Mat-Inc_V;

⌨️ 快捷键说明

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