【MATLAB 预测算法教程】_1 curve Fitting拟合工具箱的用法,以及调用工具箱拟合的模型进行预测未来的GDP值

1. 背景问题介绍

以下是某地2001-2022年的人均GDP数据,需要作出原始数据图像,并预测出未来1年该地的人均GDP,以及作图显示出观测数据与预测数据。

数据如下:
年份  2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
人均GDP  7870, 7020, 6190, 11170, 9840, 8910, 10540, 8430, 11510, 11210, 13380, 11290, 11710, 17050, 17400, 9920, 9550, 16650, 14600, 18790, 13670, 15800

所给的求解代码的效果:

在这里插入图片描述

2 附完整的代码以及操作教程

2.1 第一步 复制以下代码到MATLAB,运行后生成MATLAB的工作区数据

clear
close all
clc
% 导入数据
year = 2001:2022;
data = [7870, 7020, 6190, 11170, 9840, 8910, 10540, 8430, 11510, 11210, 13380,... 
    11290, 11710, 17050, 17400, 9920, 9550, 16650, 14600, 18790, 13670, 15800];
    

2.2 第二步 打开工具箱进行拟合,如下所示的截图

在这里插入图片描述

2.3 第三步 从工具箱导出拟合的模型至MATLAB工作区

在这里插入图片描述

2.4 第四步 复制以下代码到MATLAB中运行,代码会调用工作区的模型进行预测未来GDP值和作图

% 预测
predictValue = feval(fitresult, 2001:.05:2023);
subplot(212);
hold on
plot(2001:2022, data, 'b.', 'LineWidth', 1.0, 'MarkerSize', 6)
plot(2001:.05:2023, predictValue, 'r-', 'LineWidth', 1.0)
xlabel('年份')
ylabel('人均GDP')
legend('观测值', '工具箱的预测值', 'Location', 'northwest')

% 生成绿色直线
annotation(h,'line',[0.87 0.87],...
    [0.453 0.105],...
    'Color',[0.392156862745098 0.831372549019608 0.0745098039215686],...
    'LineWidth',1);
xlim([2001,2023])

2.5 也可以不通过工具箱和代码嵌套的方法。直接复制以下代码到MATLAB中运行即可出来全部的结果(代码包含了模拟点击工具箱拟合的操作,运行代码后会自动调用工具箱进行数据拟合与预测)

clear
close all
clc
% 导入数据
year = 2001:2022;
data = [7870, 7020, 6190, 11170, 9840, 8910, 10540, 8430, 11510, 11210, 13380,... 
    11290, 11710, 17050, 17400, 9920, 9550, 16650, 14600, 18790, 13670, 15800];

% 做出原始数据图像
h = figure;
subplot(211)
plot(2001:2022, data, 'b-', 'LineWidth', 1.0)
xlim([2001,2022])
xlabel('年份')
ylabel('人均GDP')
legend('真实值')

% 拟合,下列代码模拟了工具箱的点击操作
ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
opts.SmoothingParam = 0.99;

% Fit model to data.
[fitresult, gof] = fit( year', data', ft, opts);

% 预测
predictValue = feval(fitresult, 2001:.05:2023);
subplot(212);
hold on
plot(2001:2022, data, 'b.', 'LineWidth', 1.0, 'MarkerSize', 6)
plot(2001:.05:2023, predictValue, 'r-', 'LineWidth', 1.0)
xlabel('年份')
ylabel('人均GDP')
legend('观测值', '工具箱的预测值', 'Location', 'northwest')

% 生成绿色直线
annotation(h,'line',[0.87 0.87],...
    [0.453 0.105],...
    'Color',[0.392156862745098 0.831372549019608 0.0745098039215686],...
    'LineWidth',1);
xlim([2001,2023])

3 如有问题,请在评论区留言或者私信解答

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CJ-leaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值