Matlab学习手记——灰色预测

  • 结果图

  • 源码
function pre_data = Gray_Prediction(data, m)
%{
函数功能:灰色预测;
输入:
  data:参考数据,一行;
  m:预测点数;
输出:
  pre_data:预测数据;
示例:
clear; clc;
% data = [89677, 99215, 109655, 120333, 135823, 159878, 182321, 209407, 246619, 300670];
% data = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];
m = 2;
t1 = 1 : length(data);
t2 = 1 : m + length(data);
pre_data = Grey_Prediction(data, m);
plot(t1, data, 'o', t2, pre_data, 'linewidth', 2)
%} 
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
if nargin < 2
   error('输入参数不足!');
end
% 原始数据累加
csum_data = cumsum(data);  
n = length(data);
csum_at = zeros(1, n - 1);
for i = 1 : n - 1
    csum_at(i) = (csum_data(i) + csum_data(i + 1))/2;  % 生成累加矩阵
end
% 计算待定参数的值
D = data(2 : end)';
E = [- csum_at; ones(1, n - 1)];
c = (E*E')\E*D;
a = c(1);
b = c(2);
% 预测后续数据
pre = zeros(1, n + m);
pre(1) = data(1);
for i = 2 : n + m
    pre(i) = (data(1) - b/a)/exp(a*(i - 1)) + b/a ;
end
% 计算预测数据
pre_data = zeros(1, n + m);
pre_data(1) = data(1);
for i = 2 : n + m
    pre_data(i) = pre(i) - pre(i - 1); 
end 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值