这是我曾经写过的一个灰色预测的程序:第一个文件为函数,需要在调用时输入原始数据x0和预测周期T, 第二个文件用于计算灰色关联度,使用时直接修改相关参数和原始数据。

--------------------------------------------------------------------------

第一个文件(用于灰色建模):grymdl.m

--------------------------------------------------------------------------function GM=grymdl(x0,T)

% 输入原始数据x0

% T为从最后一个历史数据算起的第T时点

x1=zeros(1,length(x0));B=zeros(length(x0)-1,2);

yn=zeros(length(x0)-1,1);Hatx0=zeros(1,length(x0)+T);

Hatx00=zeros(1,length(x0));Hatx1=zeros(1,length(x0)+T);

epsilon=zeros(length(x0),1);omega=zeros(length(x0),1);

for i=1:length(x0)

for j=1:i

x1(i)=x1(i)+x0(j);

end

end

for i=1:length(x0)-1

B(i,1)=(-1/2)*(x1(i)+x1(i+1));

B(i,2)=1;

yn(i)=x0(i+1);

end

HatA=(inv(B'*B))*B'*yn; %GM(1,1)模型参数估计

for k=1:length(x0)+T

Hatx1(k)=(x0(1)-HatA(2)/HatA(1))*exp(-HatA(1)*(k-1))+HatA(2)/HatA(1);

end

Hatx0(1)=Hatx1(1);

for k=2:length(x0)+T

Hatx0(k)=Hatx1(k)-Hatx1(k-1);%累计还原得到历史数据的模拟值

end

for i=1:length(x0) %开始模型检验

epsilon(i)=x0(i)-Hatx0(i);

omega(i)=(epsilon(i)/x0(i))*100;

end

x0;

HatA;

Hatx0;

epsilon;

omega;

c=std(epsilon)/std(x0);

p=0;

for i=1:length(x0)

if abs(epsilon(i)-mean(epsilon))<0.6745*std(x0)

p=p+1;

end

end

p=p/length(x0);

if p>=0.95

M1=1;

elseif p>=0.8

M1=2;

elseif p>=0.7

M1=3;

else

M1=4;

end

if c<=0.35

M2=1;

elseif c<=0.5

M2=2;

elseif c<=0.65

M2=3;

else

M2=4;

end

M=max(M1,M2);

if M==1

disp('The model is good,and the forecast is:'),

disp(Hatx0(length(x0)+T))

elseif M==2

disp('The model is eligibility,and the forecast is:'),

disp(Hatx0(length(x0)+T))

elseif M==3

disp('The model is not good,and the forecast is:'),

disp(Hatx0(length(x0)+T))

else

disp('The model is bad and try again')

disp(Hatx0(length(x0)+T))

end

for i=1:length(x0)

Hatx00(i)=Hatx0(i);

end

z=1:length(x0);

plot(z,x0,'-',z,Hatx00,'*:') %将原始数据和模拟值画在一个图上帮助观察

text(2,x0(2),'History data: real line')

text(length(x0)/2,Hatx00(length(x0))/2,'Simulation data:broken line')

GM=Hatx0(length(x0)+T);

--------------------------------------------------------------------------------

第二个文件(用于计算灰色关联度):grydgr.m

--------------------------------------------------------------------------------x=[26.4,40.83,5,18.5,27,4.9;

32.56,50.36,6.5,23.8,34.9,5.97;

41.16,63.66,7.9,30.6,45,6.83;

51.82,80.15,9.6,39.43,60.76,8.21;

70.58,109.16,11.3,52.1,81.8,9.78;

111.47,136.12,15,73.92,118.12,12.3;

127.16,166.7,18,118.17,184.51,16.75;

165.99,196.91,20.66,156.65,240.83,21.49;

246.76,257.56,24.15,218.3,333.4,27.1]; %原始数据

delta=zeros(size(x,1),size(x,2)-1); %初始化绝对差

yita=zeros(size(delta,1),size(delta,2)); %初始化关联系数

for i=1:size(x,2)

x(:,i)=x(:,i)./x(1,i);  %无量纲化处理

end

for i=1:(size(x,2)-1)

delta(:,i)=abs(x(:,1)-x(:,i+1));  %求解delta

end

delta_min=min(min(delta,[],1)); %求解最小二级差

delta_max=max(max(delta,[],1)); %求解最大二级差

rou=0.5; %设定分辨系数为0.5

for i=1:size(delta,1)

for j=1:size(delta,2)

yita(i,j)=(delta_min+rou*delta_max)/(delta(i,j)+rou*delta_max); %计算关联系数

end

end

r=sum(yita)./size(yita,1); %计算灰色关联

灰色预测方法预测温度matlab,灰色预测matlab代码怎么写相关推荐

  1. 【数据分析】基于时间序列的预测方法(2021-01-08)时间序列预测

    时间序列预测 目录 时间序列预测 1.时间序列介绍 2.原始数据集 3.导入数据 4.检测时间序列的平稳性 5.如何使时间序列平稳 5.1 估计和消除趋势 5.1.1 对数转换 5.1.2 移动平均 ...

  2. 干旱预测方法总结及基于人工神经网络的干旱预测案例分析(MATLAB全代码)

    本案例采用SPEI干旱指数,构建ANN和BP神经网络预测模型,并开展1~3个月预见期的干旱预测,对比分析干旱预测模型的适用性,为流域干旱预警和管理提供技术依据. 干旱预测 1 干旱预测方法 1.1 统 ...

  3. matlab负荷预测,负荷预测matlab

    本文主要针对BP 神经网络 应用于电力系统短期负荷预测做了进一步的研究,并通过MATLAB设计BP神经 网络,仿真结果表明BP神经网络在短期负荷预测中的应用是可行的,能较好...... MATLAB ...

  4. 【综述 寿命预测】基于机器学习的设备剩余寿命预测方法综述

    论文题目:基于机器学习的设备剩余寿命预测方法综述 论文年份:2019 论文作者:裴洪/胡昌华/司小胜/张建勋/庞哲楠/张鹏 论文单位:火箭军工程大学导弹工程学院 DOI:10.3901/JME.201 ...

  5. 时间序列预测之区间预测方法(PIs:MVEDeltaBayesianBootstrapLUBE)

    文章目录 前言 一.预测区间的评价指标 1.PICP(PI coverage probability) 2.PINAW(PI normalized averaged width) 3.CWC(cove ...

  6. 定量预测方法总结及案例实践

    文章目录 1 前序 2 预测方法及案例 2.1 回归分析 2.1.1 含有哑变量的线性回归分析案例 2.1.2 自变量之间有交互作用的回归分析案例 2.1.3 非线性回归分析--预测第三产业国内生产总 ...

  7. 灰色预测方法预测温度matlab,灰色预测模型matlab程序

    %by allen @ 红嘴海鸥 %灰色模型预测是在数据不呈现一定规律下可以采取的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性 %下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈 ...

  8. 基于粒子群优化的灰色预测方法(Matlab)——附代码

    目录 摘要: 研究背景: GM(1,1)模型 基于PSO的灰色预测算法 运行结果: 本文Matlab代码分享 摘要: 本文对灰色预测算法进行了研究.在GM(1,1)模型中,发展系数a和灰色作用量u是两 ...

  9. MATLAB灰色预测

    一.灰色预测 1.灰色系统下的灰色预测 <1>什么是灰色系统? 所谓的灰色系统其实就是夹杂在白色系统和黑色系统之中的一种系统,而白色系统就是全部信息已知的系统,黑色系统就是全部信息未知的系 ...

  10. 数学建模|预测方法:灰色预测模型

    简介 灰色系统理论是由华中理工大学邓聚龙教授于1982年提出并加以发展的.二十几年来,引起了不少国内外学者的关注,得到了长足的发展.目前,在我国已经成为社会.经济.科学技术在等诸多领域进行预测.决策. ...

最新文章

  1. python找最大值的函数_Python 获取最大值函数
  2. [脑海成像]科学家利用动态电极绕过眼睛直接刺激大脑,在盲人脑海画出字母
  3. Gridview行随鼠标变色
  4. Windows内核的基本概念
  5. 计算机修改人类记忆曲线,Memory Helper
  6. c语言char sex是什么意思,2012年计算机二级C语言入门教程:结构体
  7. oracle19c报价_官宣:Oracle数据库19c在Oracle Exadata上发布啦!
  8. 怎样删除计算机Windows7自带的游戏,win7自带游戏如何卸载?win7卸载自带游戏的步骤...
  9. 【5G NR】工作频段和信道安排
  10. MySQL备份与恢复
  11. 周鸿祎谈乔布斯(张亮)
  12. 子域名在线查询网站推荐
  13. R语言入门(1)时间序列分析
  14. OpenSSL密码库算法笔记——第5章 椭圆曲线
  15. pyqt制作深度学习训练软件
  16. BusyBox 的配置
  17. 光纤HDMI线不再脆弱,开博尔铠装HDMI光纤抗拖拽
  18. IE无法上网,360浏览器部分网站无法打开
  19. R语言中写SQL语句
  20. python学习18

热门文章

  1. 移动端适配之一:到底什么是像素
  2. 水箱建模最小二乘法_高位消防水箱考点汇总及历年真题!
  3. 去除WordPress网站链接中“category”的四种方法
  4. 服务器和交换机物理连接_二层、三层及四层交换机的区别 | 小知识
  5. DCOS到底是啥?看完这篇你就懂了
  6. 13W 字!银四巨作:Java 进阶架构师核心手册
  7. 三行代码,使用第三方网站统计访客数据
  8. 使用Docker-compose 编排Maximo容器环境
  9. 贴片钽电容的正负极性识别和贴片玻璃二极管的正负极性识别
  10. IDEA中enter键无法换行