这下面是一个双变量灰色预测模型的matlab代码,k=1时可以预测出第一年的数据 为啥K=2时就不行了呢 求解答。。。。
>> %输入待预测时刻k及原始序列X0
k=1;
X0=[481.8,166.2;509.3,175.9;532.9,200.1;544.5,258.1;554.2,293.5;576.7,334.8;617.3,376.4;618.2,405.9;623.5,421.3;614.7,390.1;621.0,389.7];
%对原始序列X0累加生成序列X1
[n,m]=size (X0);
for j=1:m c=0;
for i=1:n
c=X0(i,j)+c;
X1(i,j)=c;
end
end
%计算数据矩阵L
for j=1:m
for i=1:n-1
l(i,j)=(X1(i,j)+X1(i+1,j))/2;
end
end
L=[l ones(n-1,1)];
%计算Y及参数估计值
for j=1:m
Y(1:n-1,j)=X0(2:n,j);
a(:,j)=inv(L'*L)* L'* Y(1:n-1,j);
end
a=a';
A=a(1:end,1:end-1);
B=a(1:end,end);
%计算模型的拟合值或预测值
S=X1(1,1:end);
if k==1
Z=S'
elseif k>1
Z=expm2(A*(k-1))*S'+inv(A)*(expm2(A*(k-1))-eye(size(expm2(A*(k-1)))))*B-(expm2(A*(k-2))*S'+inv(A)*(expm2(A*(k-2))-eye(size(expm2(A*(k-2)))))*B)
else disp('输入错误!k不得小于1')
end