灰色系统预测matlab代码,灰色预测MATLAB代码
灰色預測MATLAB代碼
function hsyc(x0)
%灰色模型GM(1,1)matlab代碼 在建立灰色模型前應對原始數據進行求 %%%級比%%%%重要
%輸入原始時序列x0,輸出各種所需參數 %%%%實際使用該程序時應改變圖像坐標軸%%%%
%x0代表原始數據;x1代表x0經累加后;B代表所夠造的矩陣B;Y代表向量Yn;au代表系數a,u構成的矩陣
n=size(x0,2); %計算x0的列數
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的轉置矩陣y
end
a=ones(n-1,1);
B=[b',a]; %計算得到矩陣B
Y=y'; %計算得到向量Y
au=inv(B'*B)*B'*Y; %計算得到系數a,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); %計算預測累加數列的值 X0(1)=X1(1);
k=1:n+9;
X0(k+1)=X1(k+1)-X1(k); %計算預測累加數列的還原值,即預測值
for k=2:n;
e(k)=X0(k)-x0(k); %計算殘差
E(k)=(X0(k)-x0(k))/x0(k); %計算預測值與實測值的差值跟實測值的比值,即殘差與實測值的比值
j(k)=x0(k-1)/x0(k); %計算實測數據的級比
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); %計算關聯系數
R=sum(g')/(n-1); %計算關聯度
v=[1,5,120,185];
axis(v);
grid on
plot([1996:2005],x0,'o-',[1996:2015],X0,'*:'); %畫出原始數據跟時間序列的圖像及預測數據跟時間序列的圖像
legend('原始數據','預測數據',4)
au %輸出參數a,u的值
總結
以上是生活随笔為你收集整理的灰色系统预测matlab代码,灰色预测MATLAB代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序设计教程二进制是什么,C语言程
- 下一篇: (CODE)计算机视觉引论及数字成像系统