📄 gm_1_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 + -