資源簡介
灰色預測模型的matlab源代碼,可對一些線性變換的數據進行預測
代碼片段和文件信息
?%by?allen?@?紅嘴海鷗?
%灰色模型預測是在數據不呈現一定規律下可以采取的一種建模和預測方法,其預測數據與原始數據存在一定的規律相似性
%下面程序是灰色模型GM(11)程序二次擬合和等維新陳代謝改進預測程序matlab6.5?使用本程序請注明,程序存儲為gm1.m
%x?=?[59995903584857007884];gm1(x);??測試數據?
%二次擬合預測GM(11)模型
function??[x51fcast]=gm1(x)
sizexd2?=?size(x2);
%求數組長度
k=0;
for?y1=x
????k=k+1;
????if?k>1
????????x1(k)=x1(k-1)+x(k);
????????%累加生成
????????z1(k-1)=-0.5*(x1(k)+x1(k-1));???
????????%z1維數減1,用于計算B
????????yn1(k-1)=x(k);
????else
????????x1(k)=x(k);
????end
end
%x1z1kyn1
sizez1=size(z12);
%size(yn1);
z2?=?z1‘;
z3?=?ones(1sizez1)‘;
YN?=?yn1‘;???%轉置
%YN
B=[z2?z3];
au0=inv(B‘*B)*B‘*YN;
au?=?au0‘;
%Bau0au
afor?=?au(1);
ufor?=?au(2);
ua?=?au(2)./au(1);
%aforuforua?
%輸出預測的??a?u?和?u/a的值
constant1?=?x(1)-ua;
afor1?=?-afor;
x1t1?=?‘x1(t+1)‘;
estr?=?‘exp‘;
tstr?=?‘t‘;
leftbra?=?‘(‘;
rightbra?=?‘)‘;
%constant1afor1x1t1estrtstrleftbrarightbra
strcat(x1t1‘=‘num2str(constant1)estrleftbranum2str(afor1)tstrrightbra‘+‘leftbranum2str(ua)rightbra)
%輸出時間響應方程
%******************************************************
%二次擬合
k2?=?0;
for?y2?=?x1
????k2?=?k2?+?1;
????if?k2?>?k??
????else
????????ze1(k2)?=?exp(-(k2-1)*afor);??
????end
end
%ze1
sizeze1?=?size(ze12);
z4?=?ones(1sizeze1)‘;
G=[ze1‘?z4];
X1?=?x1‘;
au20=inv(G‘*G)*G‘*X1;
au2?=?au20‘;
%z4X1Gau20
Aval?=?au2(1);
Bval?=?au2(2);
%AvalBval
%輸出預測的??AB的值
strcat(x1t1‘=‘num2str(Aval)estrleftbranum2str(afor1)tstrrightbra‘+‘leftbranum2str(Bval)rightbra)
%輸出時間響應方程
nfinal?=?sizexd2-1?+?1;
%決定預測的步驟數5??這個步驟可以通過函數傳入
%nfinal?=?sizexd2?-?1?+?1;
%預測的步驟數?1
for??k3=1:nfinal
????x3fcast(k3)?=?constant1*exp(afor1*k3)+ua;
end
%x3fcast
%一次擬合累加值
for??k31=nfinal:-1:0
????if?k31>1
????????x31fcast(k31+1)?=?x3fcast(k31)-x3fcast(k31-1);
????else
????????if?k31>0
????????????x31fcast(k31+1)?=?x3fcast(k31)-x(1);
????
評論
共有 條評論