Matlab灰色预测模型
灰色预测模型(Grey Prediction Model)是一种处理少量、不完全信息的预测方法,尤其适用于数据量少(≥4个)且趋势不明显的场景。
核心模型:GM(1,1)
通过累加生成序列挖掘数据内在规律
核心模型原理

- 变量右上方的(0)和(1)是用来表示不同数据的不同生成阶次




创建一个文件名为gm11.m
function [pred, params] = gm11(x0, predict_step)
% GM(1,1)灰色预测模型
% 输入:
% x0 - 原始数据序列 (行向量,长度≥4)
% predict_step - 预测步数
% 输出:
% pred - 预测值(包括历史拟合值 + 未来预测值)
% params - 模型参数 [a, b]
n = length(x0);
if n < 4
error('数据量不足!至少需要4个数据点。');
end
% 1. 累加生成 (AGO)
x1 = cumsum(x0);
% 2. 构建矩阵B与Y
B = [-0.5*(x1(1:end-1) + x1(2:end))', ones(n-1,1)];
Y = x0(2:end)';
% 3. 最小二乘估计参数
params = (B' * B) \ (B' * Y);
a = params(1);
b = params(2);
% 4. 计算时间响应式
k = 0:n+predict_step-1;
x1_hat = (x0(1) - b/a) * exp(-a*k) + b/a;
% 5. 累减还原 (IAGO)
x0_hat = [x1_hat(1), diff(x1_hat)];
pred = x0_hat;
% 6. 可视化结果
figure;
plot(1:n, x0, 'ro-', 'LineWidth', 1.5, 'MarkerSize', 8); hold on;
plot(1:n+predict_step, pred, 'b--', 'LineWidth', 1.5);
legend('原始数据', '预测数据', 'Location', 'best');
title('GM(1,1)灰色预测');
xlabel('时间点'); ylabel('值');
grid on;
hold off;
end
再创建一个文件调用灰色预测模型
如下
% 示例数据:某产品年度销量
x0 = [71.1, 72.4, 72.4, 72.1, 71.4]; % 原始数据
predict_step = 3; % 预测未来3步
% 调用模型
[pred, params] = gm11(x0, predict_step);
% 显示结果
fprintf('发展系数 a = %.4f\n', params(1));
fprintf('灰色作用量 b = %.4f\n', params(2));
fprintf('未来%d步预测值: ', predict_step);
disp(pred(end-predict_step+1:end));


Matlab灰色预测模型的更多相关文章
- MATLAB灰色关联度分析
目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...
- 灰色预测模型 c# 算法实现
public class GrayModel { private double a0, a1, a2; private int size; priva ...
- 数学建模-灰色预测模型GM(1,1)_MATLAB
GM(1,1).m %建立符号变量a(发展系数)和b(灰作用量) syms a b; c = [a b]'; %原始数列 A A = [174, 179, 183, 189, 207, 234, 22 ...
- [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)
灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...
- 灰色预测--matlab&python实现
function SGrey X0 = input('请输入原始负荷数据:'); %输入原始数据 n = length(X0); %原始n年数据 %累加生成 X1 = zeros(1,n); for ...
- 【数学建模】灰色系统理论II-Verhulst建模-GM(1,N)-GM(2,1)建模
灰色系统理论中,GM(1,1)建模很常用,但他是有一定适应范围的. GM(1,1)适合于指数规律较强的序列,只能描述单调变化过程.对于具有一定随机波动性的序列,我们考虑使用Verhulst预测模型,或 ...
- R实现灰色预测
1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...
- 灰色预测原理及JAVA实现
最近在做项目时,用户不想使用平均值来判断当前数据状态,想用其他的方式来分析数据的变化状态,在查找了一些资料后,想使用灰色预测来进行数据的预测.下面的内容是从网上综合下来的,java代码也做了一点改动, ...
- GM11灰色模型
作者:桂. 时间:2017-08-12 08:34:06 链接:http://www.cnblogs.com/xingshansi/p/7348714.html 前言 灰色模型(Gray model ...
- python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导
来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...
随机推荐
- python 读写、创建文件
python中对文件.文件夹(文件操作函数)的操作设计到os模块以及shutil模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作,比如:绝对路径,父路径等 ...
- SQL注入常用爆库语句
SQL注入的时候,找到了注入点,但是老是搞不清怎么爆库,最后还是得看大佬的WP 最后,终于下定决心自己整理一下爆库的常用语句和思路,如果哪里写的不对麻烦在评论区指出:-D 省流概要 select gr ...
- k维背包
题目链接:E - Product Development (atcoder.jp) 因为最多为5,因此可以暴力枚举 int dp[10][10][10][10][10]; int a[110][10] ...
- FastAPI认证系统:从零到令牌大师的奇幻之旅
title: FastAPI认证系统:从零到令牌大师的奇幻之旅 date: 2025/06/06 16:13:06 updated: 2025/06/06 16:13:06 author: cmdra ...
- Kubernetes控制器-ReplicaSet
Kubernetes控制器-ReplicaSet 控制循环 Kubernetes控制器会监听资源的创建.更新.删除事件,并触发Reconcile函数作为响应.整个调整过程被称作Reconclile L ...
- MySQL基础学习——SQL对数据库中表的记录进行操作
SQL对数据库中表的记录进行操作 sql添加表的记录 语法: 向表中插入某些列:insert into 表名 (列名1,列名2,列名3...) values(值1,值2,值3....); 向表中插入所 ...
- Golang操作Kafka
一.使用库说明 Golang中连接kafka可以使用第三方库:github.com/Shopify/sarama 二.Kafka Producer发送消息 package main import ( ...
- 详解鸿蒙Next仓颉开发语言中的全屏模式
大家好,今天跟大家分享一下仓颉开发语言中的全屏模式. 和ArkTS一样,仓颉的新建项目默认是非全屏模式的,如果你的应用颜色比较丰富,就会发现屏幕上方和底部的留白,这是应用自动避让了屏幕上方摄像头区域和 ...
- HyperMesh模型导入与几何清理
2.1 CAD 模型导入与修复 HyperMesh 支持多种主流 CAD 格式模型文件,同时针对模型在软件之间导入导出过程中可能出现数据丢失的问题提供了多种修复工具. CAD 模型导入与修复可进行: ...
- 案例分析——HyperWorks练习做模型简化
Step 01:载入模型 Exercise_2b.hm. 图 2-20 Exercise_2b 模型alt="Exercise_2b 模型" Step 02:去除曲边导角. ( ...