加载中…
个人资料
MATLAB技术论坛
MATLAB技术论坛
  • 博客等级:
  • 博客积分:0
  • 博客访问:590,608
  • 关注人气:489
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

灰色模型MATLAB源代码

(2009-10-06 13:58:33)
标签:

杂谈

分类: MATLAB
%alpha是包含α、μ值的参数矩阵;ago是预测后累加值矩阵;var是还原预测值矩阵;error是残差矩阵;c是后验差比值
clc %清屏,以使结果独立显示
format long; %设置计算精度
x=[10.90,11.57,11.36,11.49,11.82];
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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有