news 2026/4/23 13:24:39

手把手玩转MATLAB时间序列预测:NAR神经网络实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手玩转MATLAB时间序列预测:NAR神经网络实战

时间序列nar自回归神经网络预测matlab程序代码 。 代 码直接运行即可,数据excel格式。

最近在研究电力负荷预测的时候,发现MATLAB的NAR神经网络用起来真香。直接把时间序列数据喂进去,不用做复杂的特征工程就能出效果。今天给大家分享一套开箱即用的代码,数据格式就用最常见的Excel表格,复制粘贴就能跑通。

先看数据准备部分。假设我们有一列名为"负荷"的历史数据(保存为data.xlsx),读取后先做个归一化处理:

% 读取Excel数据(第一列) rawData = xlsread('data.xlsx'); data = rawData(:,1); % 数据归一化到[-1,1] [normalizedData, ps] = mapminmax(data', -1, 1); normalizedData = normalizedData';

归一化这步挺关键,特别是当数据量级差异大时,能避免神经网络训练时梯度爆炸。这里用mapminmax函数把数据压缩到[-1,1]区间,ps对象留着后面反归一化用。

接下来是构建NAR网络的核心代码:

% 设置时间滞后阶数(看前5个时间点预测下一个) inputDelay = 1:5; hiddenLayerSize = 10; % 隐藏层神经元数 % 创建NAR网络 net = narnet(inputDelay, hiddenLayerSize); % 数据集划分比例 net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; % 训练参数设置 net.trainParam.showWindow = true; % 不显示训练窗口 net.trainParam.showCommandLine = true; % 显示训练进度 net.trainParam.epochs = 1000; % 最大训练次数

这里有几个有意思的点:inputDelay控制着模型回溯的时间步长,类似于ARIMA模型里的p参数。设置成1:5表示用前5个时间点的值预测下一个值。隐藏层用了10个神经元,这个数不是固定的,数据量大的话可以适当增加,但别贪多否则容易过拟合。

训练过程我们用了早停法(通过验证集监控),避免训练次数太多导致过拟合。来看训练代码:

% 准备训练数据 [Xs, Xi, Ai, Ts] = preparets(net, {}, {}, normalizedData); % 开始训练! [net, tr] = train(net, Xs, Ts, Xi, Ai); % 预测未来10个时间点 predictionSteps = 10; [netc, Xic, Aic] = preparets(net, {}, {}, normalizedData(1:end-predictionSteps)); ypred = netc(normalizedData(end-predictionSteps+1:end), Xic, Aic);

preparets这个函数特别重要,它把原始数据转换成神经网络需要的滞后格式。比如原始数据是[1,2,3,4,5],设置滞后阶数为2时,会生成输入样本:[[1,2]→3, [2,3]→4]这样的结构。

最后做个结果可视化和误差计算:

% 反归一化恢复原始量纲 predictedData = mapminmax('reverse', cell2mat(ypred), ps); % 画对比曲线 figure plot(data, 'b-', 'LineWidth', 2) hold on plot(length(data)-predictionSteps+1:length(data), predictedData, 'r--o') legend('实际值', '预测值') % 计算RMSE rmse = sqrt(mean((data(end-predictionSteps+1:end) - predictedData').^2)); fprintf('RMSE: %.2f\n', rmse);

实际跑出来的效果,如果数据周期性明显(比如用电负荷的日周期、周周期),预测曲线会和真实值贴合得比较紧。遇到过的一个坑是:当数据有突变点时,预测结果可能会"惯性滞后"。这时候可以尝试增大inputDelay的阶数,或者加入外部影响因素(不过那就是NARX模型的范围了)。

这套代码最爽的地方在于改改Excel文件就能适配各种时间序列场景——股票价格预测、天气预测、设备振动监测都试过,改几个参数就能跑起来。想要更骚的操作,还可以试试把LSTM层替换进去,不过那就是另一个故事了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:10:33

导师严选2026 AI论文工具TOP8:继续教育必备测评

导师严选2026 AI论文工具TOP8:继续教育必备测评 2026年学术AI写作工具测评:精准匹配继续教育需求 在当前快速发展的科研环境中,学术写作已成为高校师生、研究人员等群体的核心任务之一。然而,面对繁重的论文撰写压力,传…

作者头像 李华
网站建设 2026/3/30 12:16:32

海关智慧监管空间智能平台专项技术方案——基于空间视频感知与统一空间智能底座的非侵入式监管路径

海关智慧监管空间智能平台专项技术方案——基于空间视频感知与统一空间智能底座的非侵入式监管路径建设单位:镜像视界(浙江)科技有限公司一、建设背景与监管挑战随着国际贸易规模扩大和跨境要素流动频率持续提升,海关监管对象呈现…

作者头像 李华
网站建设 2026/4/23 11:18:50

2026年最新论文降ai全攻略,教你如何快速实现aigc免费降重并降低ai率。

又到了论文开题季,很多同学发现,自己用AI辅助写完的论文,AIGC率高得吓人。明明只是润色,检测却显示“高风险AI生成”。面对这个论文降ai的难题,盲目手改往往收效甚微。 别慌。市面上已经有很多工具可以辅助降低ai率。今…

作者头像 李华
网站建设 2026/4/20 16:13:03

Flutter for OpenHarmony 实战:TextButton 文本按钮详解

Flutter for OpenHarmony 实战:TextButton 文本按钮详解 摘要:本文将深入探讨 Flutter 框架在 OpenHarmony 平台上 TextButton 控件的应用实践。作为 Flutter 中最常用的交互控件之一,TextButton 以其简洁的设计风格和灵活的定制能力成为构建…

作者头像 李华
网站建设 2026/4/19 5:25:45

(新卷,100分)-数大雁(JavaPythonJSC++C)

题目描述 一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。 具体的: ​ 1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”…

作者头像 李华
网站建设 2026/4/18 22:16:07

飞腾系列——FT-M6678模板匹配算法的实现与优化

全文概述 本文针对国产高性能多核DSP芯片FT-M6678的架构特性,对基于相关系数的模板匹配算法进行移植与优化。研究背景源于传统图像处理算法在M6678平台上的效率低下问题,通过结合算法特性与硬件架构优势,提出并行化与局部性优化方案。核心工作包括:1)基于积分图与FFT的算…

作者头像 李华