灰色系统预测matlab代码,灰色预测MATLAB代码
灰色預(yù)測MATLAB代碼
function hsyc(x0)
%灰色模型GM(1,1)matlab代碼 在建立灰色模型前應(yīng)對原始數(shù)據(jù)進行求 %%%級比%%%%重要
%輸入原始時序列x0,輸出各種所需參數(shù) %%%%實際使用該程序時應(yīng)改變圖像坐標軸%%%%
%x0代表原始數(shù)據(jù);x1代表x0經(jīng)累加后;B代表所夠造的矩陣B;Y代表向量Yn;au代表系數(shù)a,u構(gòu)成的矩陣
n=size(x0,2); %計算x0的列數(shù)
x1=cumsum(x0,2); %將x0進行累加得到矩陣x1
for k=1:n-1;
b(k)=-0.5*(x1(k+1)+x1(k));
y(k)=x0(k+1); %計算得到向量Y的轉(zhuǎn)置矩陣y
end
a=ones(n-1,1);
B=[b',a]; %計算得到矩陣B
Y=y'; %計算得到向量Y
au=inv(B'*B)*B'*Y; %計算得到系數(shù)a,u構(gòu)成的矩陣au
A=au';
k=1:n+10;
X1(k)=(x0(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1); %計算預(yù)測累加數(shù)列的值 X0(1)=X1(1);
k=1:n+9;
X0(k+1)=X1(k+1)-X1(k); %計算預(yù)測累加數(shù)列的還原值,即預(yù)測值
for k=2:n;
e(k)=X0(k)-x0(k); %計算殘差
E(k)=(X0(k)-x0(k))/x0(k); %計算預(yù)測值與實測值的差值跟實測值的比值,即殘差與實測值的比值
j(k)=x0(k-1)/x0(k); %計算實測數(shù)據(jù)的級比
end
k=1:n;
p(k)=1-(1-0.5*A(1))*j(k)/(1+0.5*A(1)); %計算級比偏差 e(k)、p(k)<0.1則說明模型達到較高要求,0.2>e(k)、p(k)>0.1則說明模型達到一般要求
m=min(abs(e)); %計算殘差中的最小值
M=max(abs(e)); %計算殘差中的最大值
k=1:n;
g(k)=(m+0.5*M)./(abs(e(k))+0.5*M); %計算關(guān)聯(lián)系數(shù)
R=sum(g')/(n-1); %計算關(guān)聯(lián)度
v=[1,5,120,185];
axis(v);
grid on
plot([1996:2005],x0,'o-',[1996:2015],X0,'*:'); %畫出原始數(shù)據(jù)跟時間序列的圖像及預(yù)測數(shù)據(jù)跟時間序列的圖像
legend('原始數(shù)據(jù)','預(yù)測數(shù)據(jù)',4)
au %輸出參數(shù)a,u的值
總結(jié)
以上是生活随笔為你收集整理的灰色系统预测matlab代码,灰色预测MATLAB代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: c语言程序设计教程二进制是什么,C语言程
 - 下一篇: ISM模型的MATLAB代码