当前位置:编程学习 > Matlab >>

matlab做灰色预测,用下面的程序怎么做?

我有1999-2009的每年人口数,要用灰色模型预测2020年人口数,用下面的程序,要改哪些地方?我一点不会,请高手说详细点,包括输出结果。 clc %清屏,以使结果独立显示 format long; %设置计算精度 x=[ 16306 17645 24197 22566 26943 31066 35190 36416 37373 37969 38566]; %数据 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x'; end n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋予矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=-0.5*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=inv(B'*B)*B'*y; %计算参数 矩阵 for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m可预测后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%如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值 end
答案:最后几行改两个地方就可以了:
for i=1:n+11 %计算数据估计值的累加数列,如改为n+1为n+m可预测后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+10%如改n为n+m-1,可预测后m-1个值
    var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值
end
其他:Df zfg strundyun dfgh zsev stynbdj dyjghdjfghf 你好,我想问下这个程序是在什么软件里运行的啊?我最近在写毕业论文要用到灰色预测,不过我没学过这个,不太清楚~~跪求帮助啊~~谢谢! 

上一个:为什么一个矩阵行列式det(x)=0 时,用matlab求逆inv(x)还可以求得结果?
下一个:如何用matlab 批量 TXT 文件导入数组问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,