MATLAB小技巧(27)灰色预测

MATLAB小技巧(27)灰色预测

前言

MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!

色预测模型是通过少量的、不完全的信息,建立数学模型做出预测的一种预测方法。是基于客观事物的过去和现在的发展规律,借助于科学的方法对未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。

它是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。

搜寻资料的时候遇到的这个示例,这里分享给大家,MATLAB版本为MATLAB2015b。

一. MATLAB仿真

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:灰色预测程序
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-27
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% I. 清空环境变量
clear all
clc

tic
%Matlab的灰色预测程序:
%y=input('请输入数据');

y=[29.8 30.11 41.05 70.12 77.79 77.79 104.82 65.22 82.7 100.79]
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i) 
end
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:(n-1)
    YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('输入需要预测的个数');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
%请输入数据 [29.8 30.11 41.05 70.12 77.79 77.79 104.82 65.22 82.7 100.79]
toc

二. 仿真结果


y =

   29.8000   30.1100   41.0500   70.1200   77.7900   77.7900  104.8200   65.2200   82.7000  100.7900


yy =

   29.8000
   59.9100
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
  326.6600
    1.0000
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
  326.6600
  431.4800
    1.0000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
  326.6600
  431.4800
  496.7000
    1.0000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
  326.6600
  431.4800
  496.7000
  579.4000
    1.0000


yy =

   29.8000
   59.9100
  100.9600
  171.0800
  248.8700
  326.6600
  431.4800
  496.7000
  579.4000
  680.1900

输入需要预测的个数6
百分绝对误差为:14.5128%
预测值为:110.5718      120.8171      132.0116      144.2434      157.6086      172.2122
时间已过 1.866326 秒。

在这里插入图片描述

三. 小结

灰度预测在预测应用上,如气象预报、地震预报、病虫害预报等,国内学者做出了许多有益的研究。简单对灰度预测分析实例做一个笔记,后期可能会用到。每天学一个MATLAB小知识,大家一起来学习进步阿!

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/125464436