资源简介
本文参考了2篇论文,并给出了matlab实现,并附有论文。
本文采用最后的预测效果前50数据预测后面10个数据。效果如文件夹中result.jpg所示。可以通过CSDN交流。
本文仅仅提供入门级别的实现方法。
代码片段和文件信息
%% 灰色预测模型
% File Name :mine
% Create Date :2016/08/09
% Author :ZYZ
% Abstract Description :Grey Model-GM(11)
% Note :本文参考了博士论文《灰色预测技术及其应用研究》4.2节和论文《灰色预测GM_1_1模型的Matlab实现》
%%
clear all; close all;clc;
%load(‘TestData.mat‘);
data = xlsread(‘mine.xlsx‘‘1-1000‘‘A1:A60‘);%读取60个原始样本数据
%data=data+100;
n1=50;%用于训练的样本数目
x0_rawdata=data(1:n11)‘;%选取n1个作为训练样本
n2=size(data1);%训练+预测未来的样本数目
pre_rawdata=data(n1+1:n21)‘;
x=1:n2;
%E1加速指数变换
M=max(x0_rawdata);
m=min(x0_rawdata);
T=M/m;
T_power=0:n1-1;
Y=zeros(size(x0_rawdata));
Y=x0_rawdata.*(T.^T_power);
%E2几何平均生成变换生成变换后的x0_rawdata
x0=zeros(size(x0_rawdata));
for i=1:n1
x0(1i)=(prod(Y(11:i)))^(1/i);
end
%1-AGO生成序列(累加)
x1=zeros(1n1);
x1(11)=x0(11);
for i=2:n1
x1(1i)=x1(1i-1)+x0(1i);
end
%紧邻均值生成
z1=zeros(1n1-1);
for i=1:n1-1
z1(1i)= 0.5*(x1(1i)+x1(1i+1));
end
%计算矩阵B和向量yn
B=zeros(n1-12);
B(:1)=-z1‘;
B(:2)=ones(n1-11);
yn=x0(2:end)‘;
%计算参数a和b
A=inv(B‘*B)*B‘*yn;
a=A(11);
b=A(21);
%微分方程的离散化解(时间响应序列)
xx1=zeros(1n2);
k=0:n2-1;
xx1(1:)=(x0(1)-b/a)*exp(-a*k) +b/a;
%还原:
xx0=zeros(1n2);
xx0(11)=x0(11);
for i=2:n2
xx0(i)=xx1(i)-xx1(i-1);
end
%还原1:变换后的x0的预测;还原2:x0的预测
%还原1
Y_undo=zeros(size(xx0));
Y_undo(11)=xx0(11);
for i=2:n2
Y_undo(1i)= (xx0(1i)^i)/(xx0(1i-1)^(i-1));
end
%还原2
xx0_undo=zeros(size(Y_undo));
T_power_undo=0:n2-1;
xx0_undo=Y_undo./(T.^T_power_undo);
%残差检验
e0=zeros(1n1);%绝对残差
e0=x0_rawdata-xx0_undo(1:n1);
q=zeros(1n1);%相对残差
q=e0./x0_rawdata;
q_mean=mean(abs(q));%平均相对误差(已加绝对值)
q_max=max(abs(q));%最大相对误差(已加绝对值)
fprintf(‘平均相对误差q_mean为(已绝对值化):%f.\n‘q_mean);
fprintf(‘最大相对误差q_max为(已绝对值化):%f.\n‘q_max);
%后验差检验
x0_rawdata_mean=mean(abs(x0_rawdata));
S1=sqrt(sum((x0_rawdata-x0_rawdata_mean).^2)/(n1-1));
e0_mean=mean(abs(e0));
S2=sqrt(sum((e0-e0_mean).^2)/(n1-1));
C=S2/S1;%方差比
p_num=length(find(abs(e0-e0_mean)<0.6745*S1));
p=p_num/n1;%小误差概率
fprintf(‘方差比C为:%f.\n‘C);
fprintf(‘小误差概率p为:%f.\n‘p);
%预测结果的残差检验
e0_pre=pre_rawdata-xx0_undo(n1+1:n2);%绝对残差
q_pre=e0_pre./pre_rawdata;%相对残差
q_pre_mean=mean(abs(q_pre));%平均相对误差(已加绝对值)
q_pre_max=max(abs(q_pre));%最大相对误差(已加绝对值)
fprintf(‘预测结果的平均相对误差q_pre_mean为(已绝对值化):%f.\n‘q_pre_mean);
fprintf(‘预测结果的最大相对误差q_pre_max为(已绝对值化):%f.\n‘q_pre_max);
%打印结果
plot(1:n2data(1:n21)‘‘k.-‘);
hold on;
plot(1:n2xx0_undo‘r.-‘);
legend(‘原始值‘‘预测值‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-10-24 10:17 GM\
文件 2821 2016-10-24 10:15 GM\mine.m
文件 10040 2016-10-24 10:16 GM\mine.xlsx
文件 480 2016-10-24 10:23 GM\readme.txt
文件 26064 2016-10-24 10:12 GM\result.jpg
目录 0 2016-10-24 10:16 GM\灰色预测论文\
文件 725101 2016-08-10 14:05 GM\灰色预测论文\灰色预测GM_1_1_模型的Matlab实现_朱登远.pdf
文件 969246 2016-08-12 10:10 GM\灰色预测论文\灰色预测技术及其应用研究_崔立志.caj
相关资源
- matlab时间序列分析工具程序
- MSE+ 一对一多类技术的matlab实现
- MIMO-OFDM无线通信技术及MATLAB实现
- MEEM视觉跟踪matlab代码
- MATLAB神经网络43个案例分析源代码
- 数字滤波器的MATLAB与FPGA实现——杜勇
- MATLAB图像与视频处理实用案例详解代
- 轴承故障诊断matlab代码四种方法
- EM算法(MATLAB实现)289407
- MATLAB应用程序接口用户指南pdf文档
- matlab图像压缩感知
- 基于MATLAB的永磁风力发电机动态仿真
- 精通MATLAB
- MATLAB 图像处理识别程序
- RANSAC算法用MATLAB写的代码
- Optometrika 透镜成像模拟
- MATLAB发票动车票识别.zip
- MATLAB交通标志识别[GUI界面,论文].z
- MATLAB车牌[GUI,语音播报,论文,详细
- MATLAB数字表盘识别[GUI界面,界面丰富
- matlab有限元代码
- 激光原理作业代码及答案
- 基于SVM的matlab车牌识别
- matlab 机器人避障程序
- 多任务高斯过程模型 Matlab工具箱 包括
- 基于MATLAB的硬币计数设计.doc
- Faster-RCNN+ZF制作自己的数据集和训练模
- Matlab传染病模型287461
- 用matlab-实现基于直方图均衡化的彩色
- 图像显著性MR方法的matlab代码
评论
共有 条评论