打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
灰色预测GM(1,1)模型MATLAB程序

MATLAB的灰色预测GM11)模型

程序如下

%程序中的变量定义;alpha是包含 值的矩阵;ago是预测后累加值矩阵;var是预测值矩阵;error是残差矩阵;c是后验差比值

function gm1(x);  %定义函数gm1(x)

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+1n+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            %如改nn+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

ago                            %显示输出预测值的累加数列

alpha                          %显示输出参数 数列

var                            %显示输出预测值

error                           %显示输出误差

c                              %显示后验差的比值c

这代码怎么用?好像有点错 

提问者: 莫寒0312 - 见习魔法师 二级 

最佳答案

楼主,我试了下,没错啊,这段代码你不能全部复制到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(i,1)=c(i,:); 

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

end 

alpha=inv(B'*B)*B'*y; %计算参数 矩阵 

for i=1:n+1 %计算数据估计值的累加数列,如改为n+1n+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 %如改nn+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) %调用统计工具箱的标准差函数计算后验差的比值

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据透视表快速计算累加值及累加占比
8-数列之累加、累乘求通项
灰色系统预测模型GM(1,1),GM(1,n)及Matlab实现
操作教程贴:从0开始,教你如何做数据分析#初阶#第五篇
以下这几个题我是通过构造常数列求出通项公式。我们也可以通过累加和累乘求它们的通项公式。我这里想要强调...
R语言函数总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服