日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

灰色預(yù)測GM(1,1)模型MATLAB程序

 絕地戰(zhàn)士 2011-01-26

MATLAB的灰色預(yù)測GM11)模型

程序如下

%程序中的變量定義;alpha是包含 值的矩陣;ago是預(yù)測后累加值矩陣;var是預(yù)測值矩陣;error是殘差矩陣;c是后驗差比值

function gm1(x);  %定義函數(shù)gm1(x)

clc             %清屏,以使結(jié)果獨立顯示

format long;     %設(shè)置計算精度

if length(x(:,1))==1    %對輸入矩陣進行判斷,如不是一維列矩陣,進行轉(zhuǎn)置變換

    x=x';

end

n=length(x);      %取輸入數(shù)據(jù)的樣本量

z=0;

for i=1:n         %計算累加值,并將值賦予矩陣be

    z=z+x(i,:);

    be(i,:)=z;

end

for i=2:n         %對原始數(shù)列平行移位

    y(i-1,:)=x(i,:);

end

for i=1:n-1       %計算數(shù)據(jù)矩陣B的第一列數(shù)據(jù)

    c(i,:)=-0.5*(be(i,:)+be(i+1,:));

end

for j=1:n-1       %計算數(shù)據(jù)矩陣B的第二列數(shù)據(jù)

    e(j,:)=1;

end

for i=1:n-1       %構(gòu)造數(shù)據(jù)矩陣B

    B(i,1)=c(i,:);  

    B(i,2)=e(i,:);  

end

alpha=inv(B'*B)*B'*y;   %計算參數(shù) 矩陣

for i=1:n+1          %計算數(shù)據(jù)估計值的累加數(shù)列,如改為n+1n+m可預(yù)測后m-1個值

   ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);

end

var(1,:)=ago(1,:)

for i=1:n            %如改nn+m-1,可預(yù)測后m-1個值

    var(i+1,:)=ago(i+1,:)-ago(i,:);   %估計值的累加數(shù)列的還原,并計算出下一預(yù)測值

end

for i=1:n

    error(i,:)=var(i,:)-x(i,:);        %計算殘差

end

c=std(error)/std(x);               %調(diào)用統(tǒng)計工具箱的標(biāo)準(zhǔn)差函數(shù)計算后驗差的比值c

ago                            %顯示輸出預(yù)測值的累加數(shù)列

alpha                          %顯示輸出參數(shù) 數(shù)列

var                            %顯示輸出預(yù)測值

error                           %顯示輸出誤差

c                              %顯示后驗差的比值c

這代碼怎么用?好像有點錯 

提問者: 莫寒0312 - 見習(xí)魔法師 二級 

最佳答案

樓主,我試了下,沒錯啊,這段代碼你不能全部復(fù)制到matlab的命令窗口中去

首先,你得把矩陣X賦值,X不是你要處理的數(shù)據(jù)么?沒有X程序運行不下去,

然后,將矩陣X賦值后你只需要復(fù)制下面這段代碼就OK

clc %清屏,以使結(jié)果獨立顯示 

format long; %設(shè)置計算精度 

if length(x(:,1))==1 %對輸入矩陣進行判斷,如不是一維列矩陣,進行轉(zhuǎn)置變換 

x=x'; 

end 

n=length(x); %取輸入數(shù)據(jù)的樣本量 

z=0; 

for i=1:n %計算累加值,并將值賦予矩陣be 

z=z+x(i,:); 

be(i,:)=z; 

end 

for i=2:n %對原始數(shù)列平行移位 

y(i-1,:)=x(i,:); 

end 

for i=1:n-1 %計算數(shù)據(jù)矩陣B的第一列數(shù)據(jù) 

c(i,:)=-0.5*(be(i,:)+be(i+1,:)); 

end 

for j=1:n-1 %計算數(shù)據(jù)矩陣B的第二列數(shù)據(jù) 

e(j,:)=1; 

end 

for i=1:n-1 %構(gòu)造數(shù)據(jù)矩陣

B(i,1)=c(i,:); 

B(i,2)=e(i,:); 

end 

alpha=inv(B'*B)*B'*y; %計算參數(shù) 矩陣 

for i=1:n+1 %計算數(shù)據(jù)估計值的累加數(shù)列,如改為n+1n+m可預(yù)測后m-1個值 

ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:); 

end 

var(1,:)=ago(1,:) 

for i=1:n %如改nn+m-1,可預(yù)測后m-1個值 

var(i+1,:)=ago(i+1,:)-ago(i,:); %估計值的累加數(shù)列的還原,并計算出下一預(yù)測值 

end 

for i=1:n 

error(i,:)=var(i,:)-x(i,:); %計算殘差 

end 

c=std(error)/std(x) %調(diào)用統(tǒng)計工具箱的標(biāo)準(zhǔn)差函數(shù)計算后驗差的比值

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多