matlab解决灰色模型代码 有点错误 求教

matlab解决灰色模型代码 有点错误 求教,第1张

楼主,我试了下,没错啊,这段代码你不能全部复制到matlab的命令窗口中去

首先,你得把矩阵X赋值,X不是你要处理的数据么?没有X程序运行不下去,

然后,将矩阵X赋值后你只需闭腊败要复制下面这段代码就OK了

clc %清屏,以使结果独立显示

format long%设置计算精度轿颤

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

error(i,:)=var(i,:)-x(i,:)%计算残差

end

c=std(error)/std(x) %调用统计工具箱的标准差函数计算后验差的比值c

结果为c,照我说的做吧,肯定能出来,我在matlab7.0上跑的

最后几行改颂粗洞两个地方就可以了: 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12517882.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存