RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分

news2024/9/25 9:32:14

1.清空变量

close all
clear,clc

2.导入数据用以RBF神经网络训练,一共14组,训练数据P(第一列为电压值,第二列为SOC值,第三列为电流值。),并将所有数据存储在变量PP中,所有电压数据存储在变量TT中。

addpath('F:\锂电池数据')
for i=1:6
 eval(['load data.',int2str(i),'.mat']) 
 Tfinal=length(I.data);
 x1=SOC.data(1:2:Tfinal)';   %SOC数据
 x2=I.data(1:2:Tfinal)';     %电流数据
 x3=V.data(1:2:Tfinal)';     %电压数据
 P=[x3(1:end-1);x1(2:end);x2(2:end)];   
 T=x3(2:end);
 PP{i}=P;
 TT{i}=T;
end

3.用第1、2、3、4、5组数据来训练网络用第六组数据来测试网络的精度

P_train=[PP{1},PP{2},PP{3},PP{4},PP{5}];%用第1、2、3、4、5组数据来训练网络
T_train=[TT{1},TT{2},TT{3},TT{4},TT{5}]; 
P_test=[PP{6}];
T_test=[TT{6}]; %用第六组数据来测试网络的精度

 4.建立RBF神经网络没有想象中的那么复杂,只需要一个语句即可完成,即net=newrb(P_train,T_train,0.0004);P_train表示输入(第一列为电压值,第二列为SOC值,第三列为电流值。),T_train表示输出(电压),训练的目标goal为0.0004.使用sim即可调用训练好的神经网络,y=sim(net,P_train);这行代码表示的意思是:通过sim函数调用训练好的神经网络,求以P_train为输入的输出电压。

net=newrb(P_train,T_train,0.0004);%goal是0.0004
view(net)
y=sim(net,P_train);%训练的神经网络的输出

5.根据上面的数据绘图,画出的真实电压值与RBF神经网络输出的电压值得对比如下图所示:

t_T_train=[1:1:length(T_train)];
figure(1)
plot(t_T_train,T_train,'r')
t_y=[1:1:length(y)];
figure(1)
hold on
plot(t_y,y,'k')
legend('actual Voltage','RBFNN output');

 6.以测试数据作为神经网络的输入,得到的输出结果返回给变量y1,测试数据的真实电压值与神经网络预测出的电压值y1的对比如下图所示:

y1=sim(net,P_test);
t_T_test=[1:1:length(T_test)];
figure(2)
plot(t_T_test,T_test,'r')
t_y1=[1:1:length(y1)];
figure(2)
hold on
plot(t_y1,y1,'k')
legend('actual Voltage','RBFNN output');

7.这个语句是用来求训练好的神经网络的一些参数。

 

ti是输入层与第一层隐含层之间的权值,是一个63行3列的矩阵。

wi是两个隐含层之间的权值,是一个1行63列的矩阵。

sigma是第一层隐层的权值阈值,是一个63行1列的矩阵,应该是隐含层之间的阈值。

w0是输出层的阈值,是一个1行1列的值。

ti=net.Iw{1};
wi=net.Lw{2};
sigma=net.b{1};
w0=net.b{2};

至此,神经网络训练参数部分已经搭建完成,将训练好的参数ti、wi、sigma、w0代入这篇博客搭建的程序中即可完成SOC的估计。RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)_新能源姥大的博客-CSDN博客

参考文献:

[1] Sun W ,  Qiu Y ,  Sun L , et al. Neural network-based learning and estimation of batterystate-of-charge: A comparison study between direct and indirect methodology[J]. International journal of energy research, 2020(13):44.
 

硕博期间所有的程序代码,一共2个多g,可以给你指导,赠送半个小时的语音电话答疑。电池数据+辨识程序+各种卡尔曼滤波算法都在里面了,后续还会有新模型的更新。快速入门BMS软件。某鹅:2629471989

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯:优秀的拆分

蓝桥杯:优秀的拆分https://www.lanqiao.cn/problems/801/learning/ 目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 输入 输出 题目分析(位运算) AC代码(Java) 题目描述 一般来说,一个正整数可以拆…

【】:addService 和 getService

一次完整的 Binder IPC 通信过程通常是这样: 首先 Binder 驱动在内核空间创建一个数据接收缓存区; 接着在内核空间开辟一块内核缓存区,建立内核缓存区和内核中数据接收缓存区之间的映射关系,以及内核中数据接收缓存区和接收进程用…

无线传感器网络硬件设计简介

无线传感器网络硬件设计简介 无线传感器网络因其巨大的应用前景越来越受到学术界和工业界的广泛关注。本文介绍了无线传感器网络节点的体系结构,分析比较了国内外当前典型的硬件平台,重点讨论了目前无线传感器网络节点常用的处理器、射频芯片、电源和传…

孩子为什么不能玩抖音精彩回答,共勉

2 可是,为什么我的同学、哥哥姐姐…… 反正身边好多人都在玩? 我不知道你父母有没有告诉你这个道理: 你把时间花在哪儿, 你就会成为什么样的人。 他们爱玩,是因为两个字: 空虚。 想象一下&#xff…

02、Cadence使用记录之创建元器件---原理图和封装(OrCAD Capture CIS)

02、Cadence使用记录之创建元器件—器件原理图符号和封装(OrCAD Capture CIS) 参考的教程是B站的视频:allegro软件入门视频教程全集100讲 前置教程: ## 01、Cadence使用记录之新建工程与基础操作(原理图绘制&#xf…

新闻文本分类任务:使用Transformer实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

13.网络爬虫—多进程详讲(实战演示)

网络爬虫—多进程详讲 一进程的概念二创建多进程三进程池四线程池五多进程和多线程的区别六实战演示北京新发地线程池实战 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者&#xff0c…

Spark SQL实战(07)-Data Sources

1 概述 Spark SQL通过DataFrame接口支持对多种数据源进行操作。 DataFrame可使用关系型变换进行操作,也可用于创建临时视图。将DataFrame注册为临时视图可以让你对其数据运行SQL查询。 本节介绍使用Spark数据源加载和保存数据的一般方法,并进一步介绍…

node安装

一、下载nodejs的安装包: 下载地址:https://nodejs.org/zh-cn/download 根据自己电脑系统及位数选择,一般都选择windows64位.msi格式安装包 二、改变nodejs的下载依赖包路径 安装完nodejs后,也同时安装了npm, npm是…

半监督语义分割_paper reading part1

Assignment 要解决的问题思路方法结果自己的想法 01 A Survey on Semi-Supervised Semantic Segmentation University of Granada, 18071, Granada, Spain 2023.02出版 problem to solve ss先前的(19年)不适用先前的调研包含弱监督,ss不…

Docker Desktop使用PostgreSql配合PGAdmin的使用

在看此教程之前,请先下载安装Docker Desktop 安装成功可以查看版本 然后拉取postgresql的镜像:docker pull postgres:14.2 版本可以网上找一个版本,我的不是最新的 发现会报一个问题 no matching manifest for windows/amd64 10.0.19045 i…

小心,丢失的消息!RocketMQ投递策略帮你解决问题!博学谷狂野架构师

RocketMQ消息投递策略 作者: 博学谷狂野架构师GitHub:GitHub地址 (有我精心准备的130本电子书PDF)只分享干货、不吹水,让我们一起加油!😄 前言 RocketMQ的消息投递分分为两种:一种是生产者往MQ …

java中级面试题

1.假如有两个线程共同操作数据库,以乐观锁的角度考虑,怎么确保不会发生并发问题? PS:考点是CAS,比较并替换。CAS中有三个值,内存中的值,新值,旧值。 假如内存中的值是2000&#xf…

[C++]string类的模拟实现和相关函数的详解

目录string总体架构具体实现默认成员函数构造函数构造拷贝函数析构函数赋值重载[]相关操作函数c_str() && size()reserve() && resize()push_back() && append()find()inserterase() && clear其余操作符重载< 、 <、 >、 >、 !<…

【系统集成项目管理工程师】项目整体管理

&#x1f4a5;十大知识领域&#xff1a;项目整体管理 项目整体管理包括以下 6 个过程: 制定项目章程定项目管理计划指导与管理项目工作监控项目工作实施整体变更控制结束项目或阶段过程 一、制定项目章程 制定项目章程。编写一份正式文件的过程&#xff0c;这份文件就是项目章程…

某程序员哀叹:月薪四五万,却每天极度焦虑痛苦,已有生理性不适,又不敢裸辞,怎么办?

高薪能买来快乐吗&#xff1f; 来看看这位程序员的哀叹&#xff1a; 实在是扛不住了&#xff0c;每天都在极度焦虑和痛苦中度过&#xff0c;早上起来要挣扎着做心理建设去上班&#xff0c;已经产生生理性的头晕恶心食欲不振。有工作本身的原因&#xff0c;更多是自己心态的问…

OpenCV+FFmpeg 实现人脸检测Rtmp直播推流(Python快速实现)

实现效果 windows平台笔记本摄像头视频采集、人脸识别&#xff0c;识别后将视频推流到RTMP流媒体服务器&#xff0c;在任意客户端可以进行RTMP拉流播放。 效果如图&#xff1a; 使用VLC播放器进行拉流。 准备工作 需要先安装OpenCV的python包以及FFmpeg。 对于ffmpeg有两…

Java——删除链表中重复的节点

题目链接 牛客在线oj题——删除链表中重复的节点 题目描述 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;返回链表头指针。 例如&#xff0c;链表 1->2->3->3->4->4->5 处…

【Vue】学习笔记-数据代理

数据代理 Object.defineproperty方法 <script type"text/javascript">let number18let person{name:张三,sex:男,}//age属性 不参与遍历Object.defineProperty(person,age,{//value:18,//enumerable:true, //控制属性是否可以枚举&#xff0c;默认值是false//…

科技成果评价最新攻略,你确定不来看看?

一、什么是科技成果评价&#xff1f; 是指按照委托者的要求&#xff0c;由具有评价资质的第三方专业机构聘请专家&#xff0c;坚持实事求是、科学民主、客观公正、注重质量、讲求实效的原则&#xff0c;依照规定的程序和标准&#xff0c;对被评价科技成果进行审查与辨别&#…