Matlab小波神经网络(时间序列预测)

2023-10-27

Matlab(小波神经网络时间序列预测)
时间序列数据:

公共号“数据统计分析与挖掘”中回复“数据”,获取本文所需数据。
公共号“数据统计分析与挖掘”中回复“书籍”,获取50本数据分析、python、统计学经典书籍。

扫描二维码,回复“数据,获取本文所需数据。

 

输入向量与输出向量的确定

输入向量:预测时间点的前4个数据

输出向量:预测时间点的数据

 

代码调试分析

%设置网络节点数

M = size(input,2);   %输入层节点数(input:N x M)

n = 6;                     %隐含层节点数

N = size(output,2); %输出层节点数(output:N x 1)

 

%设置网络权值初始化

Wjk = randn(n,M);Wjk_1 = Wjk;Wjk_2 = Wjk_1;     %输入层-隐含层权值

Wij = randn(N,n);Wij_1 = Wjk;Wij_2 = Wjk_1;     %隐含层-输出层权值

a = randn(1,n);a_1 = a;a_2 = a_1;                 %小波函数的平移因子

b = randn(1,n);b_1 = a;b_2 = b_1;                 %小波函数的伸缩因子

 

%权值学习增量初始化

d_Wjk=zeros(n,M);

d_Wij=zeros(N,n);

d_a=zeros(1,n);

d_b=zeros(1,n);

%设置学习率

lr1 = 0.01;

lr2 = 0.001;

time = 1000; %最大迭代次数

 

%数据归一化

[inputn,inputps] = mapminmax(input');      %归一化的数据格式:M x N

[outputn,outputps] = mapminmax(output');  %归一化的数据格式:1 x N

inputn = inputn';

outputn = outputn';

 

%节点初始化

y=zeros(1,N);

net=zeros(1,n);

net_ab=zeros(1,n);

 

%网络训练

for i=1:time

    error(i) = 0; %保存训练误差

    for kk=1:size(input,1)

        %提取输入输出数据

        x=inputn(kk,:);         

        yqw=outputn(kk,:);

        %网络预测输出

        for j=1:n               

            for k=1:M

                net(j)=net(j)+Wjk(j,k)*x(k);

                net_ab(j)=(net(j)-b(j))/a(j);

            end

            temp=mymorlet(net_ab(j));   %小波函数

            for k=1:N

                y=y+Wij(k,j)*temp;   

            end

        end

        %计算误差和

        error(i)=error(i)+sum(abs(yqw-y));

        %权值调整

        for j=1:n

            %计算d_Wij(隐含层-输出层权值修正)

            temp=mymorlet(net_ab(j));

            for k=1:N

                d_Wij(k,j)=d_Wij(k,j)-(yqw(k)-y(k))*temp;

            end

            %计算d_Wjk(输入层-隐含层权值修正)

            temp=d_mymorlet(net_ab(j));

            for k=1:M

                for l=1:N

                    d_Wjk(j,k)=d_Wjk(j,k)+(yqw(l)-y(l))*Wij(l,j) ;

                end

                d_Wjk(j,k)=-d_Wjk(j,k)*temp*x(k)/a(j);

            end

            %计算d_b(输出层阈值修正)

            for k=1:N

                d_b(j)=d_b(j)+(yqw(k)-y(k))*Wij(k,j);

            end

            d_b(j)=d_b(j)*temp/a(j);

            %计算d_a(隐含层阈值修正)

            for k=1:N

                d_a(j)=d_a(j)+(yqw(k)-y(k))*Wij(k,j);

            end

            d_a(j)=d_a(j)*temp*((net(j)-b(j))/b(j))/a(j);

        end

        %权值参数更新      

        Wij=Wij-lr1*d_Wij;

        Wjk=Wjk-lr1*d_Wjk;

        b=b-lr2*d_b;

        a=a-lr2*d_a;

       

        d_Wjk=zeros(n,M);

        d_Wij=zeros(N,n);

        d_a=zeros(1,n);

        d_b=zeros(1,n);

 

        y=zeros(1,N);

        net=zeros(1,n);

        net_ab=zeros(1,n);

        

        Wjk_1=Wjk;Wjk_2=Wjk_1;

        Wij_1=Wij;Wij_2=Wij_1;

        a_1=a;a_2=a_1;

        b_1=b;b_2=b_1;

    end

end

function y=mymorlet(t)

y = exp(-(t.^2)/2) * cos(1.75*t);

end

%网络预测

test = mapminmax('apply',input_test',inputps);

test = test';

for i=1:size(test,1)

    vec = test(i,:);

    for j=1:n

        for k=1:M

            net(j) = net(j)+Wjk(j,k)*vec(k);

            net_ab(j)=(net(j)-b(j))/a(j);

        end

        temp=mymorlet(net_ab(j));

        for k=1:N

            y(k)=y(k)+Wij(k,j)*temp ;

        end

    end

    yuce(i) = y(k);

    y = zeros(1,N);

    net = zeros(1,n);

    net_ab = zeros(1,n);

end

ynn = mapminmax('reverse',yuce,outputps); %网络预测值

 

%误差可视化

figure(1)

plot(ynn,'-or')

hold on

plot(output_test,'b--')
————————————————
版权声明:本文为CSDN博主「codeQin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42394743/article/details/81587756

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab小波神经网络(时间序列预测) 的相关文章

  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • Matlab:掩码/创建一个知道其原点且具有一定半径的圆形 roi

    只是一个简单的问题 我有一张图像 并且提取了某个点 特征 我知道每个帧中该点的坐标 说 x1 和 y1 我需要一个圆形 ROI 形式 该点在图像上具有我选择的半径 我尝试了 impoly 和 roipoly 当我知道图像中的要点时 不知道如
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 将自动生成的 Matlab 文档导出为 html

    我想为我开发的 Matlab 工具箱生成完整的帮助 我已经看到如何显示自定义文档 http www mathworks fr fr help matlab matlab prog display custom documentation h
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • 在另一列中添加具有特定条件的一列,如 excel 的 sumif

    我有一个像这样的矩阵 A 1 2 2 3 3 4 4 5 5 6 6 8 7 9 8 5 9 4 现在我想添加第二列 条件是如果 limit 0 interval 3 且 limit limit interval 或者换句话说 当第 1 列
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得

随机推荐

  • 商品消费计费课程设计

    具体代码如下 商品销售计费显示系统 输入品种 数量 单价 计算并显示顾客应付的款数 并打印清单 include
  • metasploitable2

    nmap使用 nmap sP IP段 掩码 范围内ping通的所有主机 通过抓包只看到发了arp包 还没有找全局域网内所有主机 nmap sP 192 168 43 0 24 PS 让nmap使用SYN包而不是ACK包来对目标主机进行扫描
  • pyinstaller 打包程序 出现错误的解决方法

    打开命令窗口进入到程序所在目录下 1 使用命令pyinstaller p C Python27 Lib site packages zmq SpiderTaskDistributor py 打包程序 p参数是添加的pyinstaller打包
  • Quartz简单应用(Springboot环境)

    需求 在项目中免不了会使用定时任务来执行一些自动化的操作 简单的定时任务可以在方法上加上 Schedule的注解来执行定时任务 但是如果有多个同级的模块在不同的时间点执行同一个方法 就没办法仅仅使用 Schedule来执行了 侃场景 现在某
  • Linux Tomcat JVM 参数调优

    Linux Tomcat JVM 参数调优 适用场景 Tomcat 长期运行过程遇到Caused by java lang OutOfMemoryError PermGen space或java lang OutOfMemoryError
  • VB.net对于datagride控件的使用及C#中datagrideView\bindingSource\bindingNavigator\tabcontrol控件的应用

    绑定数据源 DataSet ds new DataSet SqlConnection connection new SqlConnection netiFace ConnectionString ConnectionString conne
  • d指针在Qt上的应用及实现

    Qt为了使其动态库最大程度上实现二进制兼容 引入了d指针的概念 那么为什么d指针能实现二进制兼容呢 为了回答这个问题 首先弄清楚什么是二进制兼容 所谓二进制兼容动态库 指的是一个在老版本库下运行的程序 在不经过编译的情况下 仍然能够在新的版
  • pip使用踩坑集合

    1 python版本切换后 pip不好用了 报错如下 使用 python m pip install U pip 命令对pip进行更新 2 pip安装包时 报错如下 网络状态有问题 国外源挂梯子 国内源关梯子 3 windows系统下pyt
  • GD32 笔记 05:如何使用 DMA 配合 ADC,以软触发的方式采集电压

    文章目录 一 前言 二 主要代码 1 变量定义 2 初始化配置函数 GPIO ADC DMA 3 主函数 一 前言 测试时使用的 MCU 是 GD32E230 测试例程下载地址是 20210409 test gd32 usart dma z
  • Linux下安装NetworkManger

    NetworkManager简介 NetworkManager由一个管理系统网络连接 并且将其状态通过D BUS 是一个提供简单的应用程序互相通讯的途径的自由软件项目 它是做为freedesktoporg项目的一部分来开发的 进行报告的后台
  • 四:虚拟机是如何为对象分配内存空间的?

    指针碰撞 Bump the Pointer 空闲列表 Free List 假设Java堆中内存是绝对规整的 所有用过的内存都放在一边 空闲的内存放在另一边 中间放着一个指针作为分界点的指示器 那所分配内存就仅仅是把那个指针向空闲空间那边挪动
  • 在vue3里pinia的一些常规使用和实战

    安装 首先 我们需要安装 pinia 包 可以使用 npm 或 yarn 进行安装 npm install pinia yarn add pinia 创建 pinia 通过 defineStore 函数来创建一个 pinia import
  • Vue——事件绑定

    事件绑定 方法 v on 可以简写成 使用 两种方式 内联 直接把js写在标签上 调用方法 调用methods里定义的方法 事件修饰符 stop 阻止单击事件冒泡 prevent 提交事件不再重载页面 capture 使用事件捕获模式 se
  • 关于Unity中的NGUI和UGUI

    一 用Unity开发2D游戏 有三套关系 1 GUI Unity本身自带的GUI 2 NGUI 以前在Unity中广泛来做2D的 是第三方的包 需要安装 3 UGUI Unity5 X后 其实是Unity4 6以后 Unity找到NGUI的
  • 题目2681:蓝桥杯2022年第十三届省赛真题-矩形拼接JAVA实现下的思考

    先附上AC的代码 供大家参考 如果感兴趣的话 可以继续向下阅读 代码 package 2022年省赛Java大学C组真题 import java util Scanner public class Main f 分类考虑问题 以A B C为
  • r语言 求几个数的最小公倍数_(人教版)五年级下册第四单元:公倍数和最小公倍数资源包...

    人教版五年级下册资源包 课题 第四单元 公倍数和最小公倍数 教材P68 69 71内容 课程设计者 柳州市小数指导中心成员 柳州市柳北区长塘中心校 覃柳媛 柳州市第四十六中学教育集团 附小 罗怡 目标导学 学习目标 1 理解公倍数和最小公倍
  • 【基于 React + Three.js 第一人称3D星球游戏】01.在React中使用Three.js

    Three js DOM结构 来源 https threejsfundamentals org threejs lessons threejs fundamentals html Three js的大部分实例文件是直接写在HTML中 直接接
  • RocketMQ第二篇 单机版安装操作步骤

    MQ下载地址 下载RocketMQ 4 7 1版本 RocketMQ运行版本下载地址 https archive apache org dist rocketmq 4 7 1 rocketmq all 4 7 1 bin release z
  • 用Python做一个简单的表白程序

    我最近在看了一本Python tkinter从入门到精通 看了四章了 前面四章主要就是讲部件的共同属性 控件的布局 窗口的属性设置 于是利用这些做了个简单的程序 我将这个程序打包成了执行文件 放在了百度网盘 链接 https pan bai
  • Matlab小波神经网络(时间序列预测)

    Matlab 小波神经网络时间序列预测 时间序列数据 公共号 数据统计分析与挖掘 中回复 数据 获取本文所需数据 公共号 数据统计分析与挖掘 中回复 书籍 获取50本数据分析 python 统计学经典书籍 扫描二维码 回复 数据 获取本文所