GM11 的 Matlab 代码共享。
function [y,p,e]=gm_1_1(X,k)
%Build the calculating dieplate for the typical gray model.
%Example [y,p]=gm_1_1([200 250 300 350],2)
%Designed by NIXIUHUI,Dalian Fisher University.
%20 April,2004. Last modified by NXH at 25 September,2004
if nargout>3,error('Too many output argument.');end
if nargin==1,k=1;x_orig=X;
elseif nargin==0|nargin>2
error('Wrong number of input arguments.');
end
x_orig=X;
predict=k;
%AGO process
x=cumsum(x_orig);
%compute the coefficient(a and u)------------------------
n=length(x_orig);
%first generate the matrix B
for i=1:(n-1);
B(i)=-(x(i)+x(i+1))/2;
end
B=[B' ones(n-1,1)];
%then generate the matrix Y
for i=1:(n-1);
y(i)=x_orig(i+1);
end
Y=y';
%get the coefficient. a=au(1) u=au(2)
au=(inv(B'*B))*(B'*Y);
%--------------------------------------------------------
%change the grey model to symbolic expression
coef1=au(2)/au(1);
coef2=x_orig(1)-coef1;
coef3=0-au(1);
costr1=num2str(coef1);
costr2=num2str(abs(coef2));
costr3=num2str(coef3);
eq=strcat(costr1,'+',costr2,'e^',costr3,'*(t-1))');
评论0