自适应迭代扩展卡尔曼滤波算法AIEKF估计SOC VS 扩展卡尔曼估计SOC

news2025/1/22 12:26:51

自适应迭代扩展卡尔曼滤波算法(AIEK)

自适应迭代扩展卡尔曼滤波算法(AIEK)是一种滤波算法,其目的是通过迭代过程来逐渐适应不同的状态和环境,从而优化滤波效果。

该算法的基本思路是在每一步迭代过程中,根据所观测的数据和状态方程,对滤波器的参数进行自适应调整,以便更好地拟合实际数据的分布。具体而言,该算法包括以下步骤:

初始化:首先,为滤波器的初始参数设定一个初始值,这些参数包括状态转移矩阵、测量矩阵、过程噪声协方差和测量噪声协方差等。
预测:根据当前的状态方程和滤波器参数,对下一个状态进行预测,并计算预测误差。
校正:根据预测结果和实际观测数据,对预测进行修正,以便更好地拟合实际数据的分布。
参数更新:根据校正结果,自适应地调整滤波器参数,以便在下一个迭代过程中更好地拟合数据。
该算法具有自适应性和迭代性,能够逐渐适应不同的状态和环境,从而优化滤波效果。在实际应用中,可以根据具体问题选择不同的滤波器参数调整方法和迭代策略,以获得更好的滤波效果。

加载待辨识工况数据

load FUDS.mat;       %导入数据
Ut = FUDS.Voltage;   %测量电压
I = FUDS.Current;    %测量电流
cs0=[   1.2761;
       -0.2899;
        0.0365;
       -0.0449;
        0.0095];

计算SOC实验数据

soc_act = nan(1,N);
ocv = nan(1,N);
soc_act(1)=1;
ocv(1)=Ut(1);
for i=2:N
    soc_act(i)=soc_act(i-1)-I(i)/(Qn);
    nihe=[1.936,-7.108,9.204,-4.603,1.33,3.416];
    ocv(i)=polyval(nihe,soc_act(i)); 
end

FFRLS参数在线辨识算法

[R0,R1,R2,C1,C2] = FFRLS(Ut,I,Qn,nihe,ff,cs0);


% 辨识参数图
t=1:N;

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,R0,'r.-','LineWidth',1);
legend('R0(Ω)');

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,R1,'g-.','LineWidth',1);
legend('R1(Ω)');

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,C1,'b-','LineWidth',1);
legend('C1(F)');

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,R2,'c--','LineWidth',1);
legend('R2(Ω)');

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,C2,'m-','LineWidth',1);
legend('C2(F)');

EKF滤波算法

SOCest_init=0.9;
P0=1e-3;     %状态误差协方差初值
Q=1e-8;      %过程噪声期望值
R=1;      %观测噪声期望值

[SOC_ekf,volt]=EKF(I,Ut,dt,Qn,SOCest_init,N,Q,R,nihe,P0,R0,R1,R2,C1,C2);
error_V_EKF= Ut'-volt;
error_SOC_EKF= soc_act-SOC_ekf;      %滤波处理后的误差


AIEKF滤波算法

X_aiekf=zeros(3,N);  %定义状态向量x
X_aiekf(:,1)=[0;0;SOCest_init];%状态向量x初值设定
Q=1e-8;
R=1;
P0=0.01*eye(3);%定义协方差
f=0.1;
M=30;           %误差积累值窗口系数
[SOC_aiekf,Um]=AIEKF(I',Ut',X_aiekf,f,M,Q,R,N,P0,R0,R1,R2,C1,C2,Qn,nihe);

error_V_AIEKF= Ut'-Um;
error_SOC_AIEKF= soc_act-SOC_aiekf;      %滤波处理后的误差

绘图

t=1:N;
figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,Ut,'r',t,volt,'b',t,Um,'g');
legend('端电压真实值','端电压EKF估计值','端电压AIEKF估计值'); 

figure;
set(gcf,'Units','centimeters','Position',[2 2 19.6 8]); 
plot(t,error_V_EKF,'b',t,error_V_AIEKF,'g');
legend('EKF端电压误差','AIEKF端电压误差'); 

% SOC估计结果图
figure
hold on;box on;
plot(SOC_aiekf,'b');%AIEKF
plot(SOC_ekf,'k');  %EKF
plot(soc_act,'r');
legend('AIEKF','EKF','参考值')
xlabel('时间(s)')
ylabel('SOC')
axis([0 12000 0 1])

figure
hold on;box on;
plot(100*error_SOC_EKF,'k');
plot(100*error_SOC_AIEKF,'b');
legend('EKF','AIEKF')
xlabel('时间(s)')
ylabel('SOC误差百分数(%)')
axis([0 12000 -10 15])

仿真结果

FUDS工况下参考SOC曲线
在这里插入图片描述

DST工况下参考SOC曲线
在这里插入图片描述

FUDS工况下SOC估计对比图(EKF与参考值)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

FUDS工况下SOC估算绝对误差曲线图
在这里插入图片描述

在这里插入图片描述

DST工况下SOC估计对比图(EKF与参考值)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

DST工况下SOC估算绝对误差曲线图
在这里插入图片描述
在这里插入图片描述

FUDS工况下SOC估算曲线图(参考值 EKF AIEKF)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SOC估算不同算法绝对误差曲线图

在这里插入图片描述
在这里插入图片描述

DST工况下SOC估算曲线图(参考值 EKF AIEKF)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SOC估算不同算法绝对误差曲线图

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

分割等和子集【动态规划】

分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 class Solution {//testpublic boolean canPartition(int[] nums) {if(nums null || nums.length 0) return false;int n nums…

YUVToRGB(CUDA Conversion)库的学习

目录 前言1. YUVToRGB1.1 Supported Feature1.2 Performance1.2.1 Performance Table1.2.2 How to Benchmark1.2.3 How to Verify the Accuracy 1.3 User Integration1.4 Summary 2. YUVToRGB案例2.1 环境配置2.2 run案例 3. YUVToRGB浅析4. 补充知识4.1 YUV不同格式区别4.2 Lu…

BGP路由属性

任何一条BGP路由都拥有多个路径属性(Path Attributes),当路由器通告BGP路由给它的对等体时,该路由将会携带多个路径属性,这些属性描述了BGP路由的各项特征,同时在某些场景下也会影响BGP路由优选的决策。 一…

ElasticSearch+Kibana on K8s 讲解与实战操作(版本7.17.3)

文章目录 一、概述二、ElasticSearch 节点类型与作用三、K8s 集群部署四、ElasticSearch on K8s 开始部署1)下载安装包2)构建镜像3)修改yaml编排4)开始部署5)测试6)elasticsearch-head5)卸载 五…

K8S:kubectl陈述式及声明式资源管理

文章目录 一.陈述式资源管理方法1.陈述式资源管理概念2.基本信息查看(1)查看版本信息(2)查看资源对象简写(3)查看集群信息(4)配置kubectl自动补全(5)node节点…

JAVASE---抽象类和接口

抽象类 抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类语法 在…

解决git无法上传大文件(50MB)

解决方法 使用LFS解决GitHub无法上传大于50MB的文件 LFS简介 Git LFS(Large File Storage)是 Git 的一个扩展,用于管理大型文件,如二进制文件、图像、音频和视频文件等。它的主要目的是解决 Git 对大型二进制文件的版本控制和存…

【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能

目录 1 多层索引(MultiIndex) 1.1 创建多层索引 1.1.1 从元组创建多层索引 1.1.2 使用 set_index() 方法创建多层索引 1.2 访问多层索引数据 1.3 多层索引的层次切片 1.4 多层索引的重塑 2 自定义函数和映射 2.1 使用 apply() 方法进行自定义函…

飞行动力学 - 第18节-part2-航向操纵面 之 基础点摘要

飞行动力学 - 第18节-part2-航向操纵面 之 基础点摘要 1. 航向操纵面2. 非常规航向操纵面3. 正方向舵偏角产生的偏航力矩4. 产生或平衡侧滑角 β \beta β所需的方向舵偏角5. 参考资料 1. 航向操纵面 方向舵是航向的主要操纵面。 2. 非常规航向操纵面 开裂式阻力方向舵 ( Spl…

国际版腾讯云/阿里云:云解析DNS是什么

云解析DNS是什么 ​ 问答 云解析DNS是一种安全、快速、安稳、牢靠的威望DNS解析处理服务。 云解析DNS为企业和开发者将易于处理辨认的域名转换为计算机用于互连通讯的数字IP地址,然后将用户的拜访路由到相应的网站或应用服务器。 云解析 DNS(Domain Nam…

Spring安全配置: 构建安全稳固的Java应用

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Docker 镜像库国内加速的几种方法

概述 在国内,拉取 Docker 镜像速度慢/时不时断线/无账号导致限流等,比较痛苦😣. 这里提供加速/优化的几种方法。 梳理一下,会碰到以下情况: 国内下载速度慢/时不时断线:是因为网络被限制了。没有公共镜像…

React如何实现国际化?

目录 一、Redux准备工作 commonTypes.js commonActions.js commonReducer.js rootReducer.js 二、然后定义SelectLang组件 index.js index.less 三、创建语言包 welcomeLocale.js index.js 四、使用 react的入口文件 App.js welcome.js 附 关于如何实现国际…

微信出租车小程序开发完全指南

微信出租车小程序是一种便捷的租车平台,能够为用户提供租车服务,并实现在线预订、支付等功能。如果你也想打造一款属于自己的微信出租车小程序,那么这篇文章将为你提供详细的制作指南。 首先,你需要登录【乔拓云】制作平台&#x…

Spring云服务:如何将应用程序轻松迁移到云端

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Mybatis实体类属性与数据库字段的对应关系

方法一:起别名 select t_id(数据库字段) tId(类的属性), ... , ...from 表名 方法二:开启驼峰映射 <!-- 开启驼峰映射 数据库 s_id java类 sId--><setting name"mapUnderscoreToCamelCase" value"true"/> 当java类中属性命名…

STM32WB55开发(3)----断开蓝牙连接

STM32WB55开发----3.断开蓝牙连接 概述硬件准备视频教学样品申请选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙LED配置设置工程信息工程文件设置参考文档SVCCTL_App_NotificationACI_HAL_GET_LINK_STATUShci_disco…

持安科技何艺:基于可信验证的应用访问安全模型 | CCS2023演讲分享

近日&#xff0c;2023CCS成都网络安全大会在成都举办&#xff0c;大会由四川省互联网信息办公室指导&#xff0c;成都市互联网信息办公室、成都高新技术产业开发区管理委员会联合主办&#xff0c;无糖信息技术有限公司承办。 持安科技创始人兼CEO何艺受邀参与2023CCS大会金融安…

数据结构与算法——复习总结

线性表 线性表括顺序表和链式表。 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表。应用&#xff1a;表达式求值&#xff0c;函数递归调用 队列&#xff08;Queue&#xff09;是只允许在一端进行插入&#xff0c;在另一端删除的线性表。应用&…