当前位置: 首页 > news >正文

Matlab实现基于CNN-GRU的锂电池SOH估计

Matlab实现基于CNN-GRU的锂电池SOH估计

目录

    • Matlab实现基于CNN-GRU的锂电池SOH估计
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

在这里插入图片描述

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

基本介绍

锂电池SOH估计!基于CNN-GRU的锂电池健康状态估计。CNN-GRU模型通过融合局部特征提取与长期依赖建模,显著提升了锂电池SOH估计的精度。其关键在于合理设计网络层次、优化特征工程策略,并结合实际应用场景选择评估指标。
数据来源:获取锂电池数据集(如NASA 数据集),包含电压、电流、温度、容量等时序数据。
特征选择:选取与SOH相关的特征(如电压曲线、电流曲线、温度变化等)。
数据归一化:对特征进行归一化(缩放到[0,1]),消除量纲影响。
锂电池健康状态(State of Health, SOH)是衡量电池性能退化程度的核心指标,通常以容量衰减率或内阻增加率表示,范围从0%(完全失效)到100%(全新状态)。其重要性体现在:
安全与效率:SOH直接影响电池的剩余寿命、充放电策略和热失控风险。例如,SOH低于80%的电池可能需退役。
经济性:在储能电站和电动汽车中,SOH评估可优化电池更换周期,降低运维成本。
可持续性:通过SOH监测实现梯次利用,减少资源浪费。
CNN-GRU混合模型结合了两种网络的互补特性:
CNN的局部特征提取
通过一维卷积核捕捉充放电数据中的局部模式(如电压曲线的拐点、温度波动)。
参数共享机制降低过拟合风险,适用于高维度传感器数据(电压、电流、温度等)。
GRU的时序依赖性建模更新门和重置门动态调整记忆单元,解决传统RNN的梯度消失问题。
对电池老化过程中的长期退化趋势(如容量随循环次数的非线性衰减)具有更强的捕捉能力。
三、模型架构设计
典型CNN-GRU混合模型包含以下核心模块:

输入层:接收多维度时序数据(如电压、电流、温度序列)。
CNN特征提取层
卷积层:使用多个滤波器提取局部特征,如充放电曲线的斜率变化。
池化层:通过最大池化降低数据维度,保留关键特征。
GRU时序建模层
将CNN输出的特征序列输入GRU,学习时间依赖性。例如,捕捉容量衰减与循环次数间的非线性关系。
输出层:全连接层映射到SOH值。
在这里插入图片描述

程序设计

完整源码私信回复Matlab实现基于CNN-GRU的锂电池SOH估计

%% 参数设置
options = trainingOptions('adam', ...     % Adam 梯度下降算法'MaxEpochs', 100,...                  % 最大训练次数'MiniBatchSize',64,...                % 批处理'InitialLearnRate', 0.001,...         % 初始学习率为0.001'L2Regularization', 0.001,...         % L2正则化参数'LearnRateSchedule', 'piecewise',...  % 学习率下降'LearnRateDropFactor', 0.1,...        % 学习率下降因子 0.1'LearnRateDropPeriod', 50,...         % 经过50次训练后 学习率为 0.001*0.1'ValidationPatience', Inf,...         % 关闭验证'Plots', 'training-progress',...      % 画出曲线'Verbose', false);
%%  训练模型
net= trainNetwork(p_train, t_train, lgraph, options);
%% 预测
t_sim1 = predict(net, p_train); 
t_sim2 = predict(net, p_test ); 
%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
%%  均方根误差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);
%%  相关指标计算
%  R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test  - T_sim2')^2 / norm(T_test  - mean(T_test ))^2;
disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])
%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;
disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])
%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1')./T_train));
MAPE2 = mean(abs((T_test - T_sim2')./T_test));
disp(['训练集数据的MAPE为:', num2str(MAPE1)])
disp(['测试集数据的MAPE为:', num2str(MAPE2)])
%  MBE
mbe1 = sum(abs(T_sim1' - T_train)) ./ M ;
mbe2 = sum(abs(T_sim1' - T_train)) ./ N ;
disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

相关文章:

Matlab实现基于CNN-GRU的锂电池SOH估计

Matlab实现基于CNN-GRU的锂电池SOH估计 目录 Matlab实现基于CNN-GRU的锂电池SOH估计效果一览基本介绍程序设计参考资料 效果一览 基本介绍 锂电池SOH估计!基于CNN-GRU的锂电池健康状态估计。CNN-GRU模型通过融合局部特征提取与长期依赖建模,显著提升了锂…...

神经网络在专家系统中的应用:从符号逻辑到连接主义的融合创新

自人工智能作为一个学科面世以来,关于它的研究途径就存在两种不同的观点。一种观点主张对人脑的结构及机理开展研究,并通过大规模集成简单信息处理单元来模拟人脑对信息的处理,神经网络是这一观点的代表。关于这方面的研究一般被称为连接机制…...

【Hive入门】Hive安全管理与权限控制:基于SQL标准的授权GRANT REVOKE深度解析

目录 引言 1 Hive权限模型概述 2 SQL标准授权基础 2.1 核心概念解析 2.2 授权模型工作流程 3 GRANT/REVOKE语法详解 3.1 基础授权语法 3.2 权限回收语法 3.3 参数说明 4 授权场景 4.1 基础授权示例 4.2 列级权限控制 4.3 视图权限管理 5 权限查询与验证 5.1 查看…...

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式(Publish/Subscribe)是一种消息传递模式,它允许消…...

JobHistory Server的配置和启动

在 Hadoop 集群里&#xff0c;JobHistory Server&#xff08;JHS&#xff09;负责为所有已完成的 MapReduce 作业提供元数据与 Web 可视化&#xff1b;只有它启动并配置正确&#xff0c;开发者才能通过 http://<host>:19888 查看作业的执行详情、计数器和任务日志…...

刷leetcodehot100返航版--哈希表5/5

回顾一下之前做的哈希&#xff0c;貌似只有用到 unordered_set&#xff1a;存储无序元素unordered_map&#xff1a;存储无序键值对 代码随想录 常用代码模板2——数据结构 - AcWing C知识回顾-CSDN博客 1.两数之和5/5【30min】 1. 两数之和 - 力扣&#xff08;LeetCode&…...

【STM32 学习笔记】GPIO输入与输出

GPIO详解 一、GPIO基本概念 GPIO&#xff08;通用输入输出&#xff09;是微控制器与外部设备交互的核心接口&#xff0c;具有以下特性&#xff1a; 可编程控制输入/输出模式支持数字信号的读取与输出集成多种保护机制复用功能支持片上外设连接 二、GPIO位结构解析 2.1 保护二…...

网狐飞云娱乐三端源码深度实测:组件结构拆解与部署Bug复盘指南(附代码分析)

本文基于“网狐系列三网通飞云娱乐电玩”源码包&#xff0c;从项目结构、界面逻辑、三端兼容性、机器人机制、本地部署实践等多维角度进行全面剖析&#xff0c;并附录多个真实报错修复案例与源码片段。本组件适用于本地学习、框架研究与技术测试&#xff0c;不具备线上部署条件…...

HTML5好看的水果蔬菜在线商城网站源码系列模板9

文章目录 1.设计来源1.1 主界面1.2 商品界面1.3 购物车界面1.4 心愿列表界面1.5 商品信息界面1.6 博客界面1.7 关于我们界面1.8 联系我们界面1.9 常见问题界面1.10 登录界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&…...

【ArcGIS Pro微课1000例】0066:多边形要素添加折点,将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段?

文章目录 增密工具介绍举例1. 圆2. 椭圆3. 折线增密工具介绍 ArcGIS Pro中提供了【增密】工具,作用是: 沿线或多边形要素添加折点。还可将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。 原理图如下所示: 用法: 通过距离参数对直线段进行增密。利用距离、最大偏转角或最大…...

虚拟dom是什么,他有什么好处

本编&#xff0c;博主将从虚拟dom是什么引出&#xff0c;为什么需要虚拟dom&#xff0c; 虚拟dom的益处 &#xff0c; 为什么需要Diff算法&#xff0c;for循环中key的作用是什么。 1.虚拟dom是什么 虚拟dom就是以js对象的形式表示真实dom结构 例如 const newVNode {type: di…...

算力经济模型推演:从中心化到去中心化算力市场的转变(区块链+智能合约的算力交易原型设计)

一、算力经济的历史脉络与范式转移 1.1 中心化算力市场的演进困境 传统算力市场以超算中心、云计算平台为核心载体&#xff0c;其运营模式呈现强中心化特征。中国移动构建的"四算融合"网络虽实现百万级服务器的智能调度&#xff0c;但动态资源分配仍受制于集中式控…...

数据结构之二叉树(4)

&#xff08;注&#xff1a;本文所示代码均为C&#xff09; 一.二叉树选择题 根据二叉树的性质&#xff0c;完成以下选择题: &#xff08;1&#xff09;第一组 某二叉树共有 399 个结点&#xff0c;其中有 199 个度为 2 的结点&#xff0c;则该二叉树中的叶子结点数为&am…...

互联网与无线广播:数字时代与模拟时代的通讯双轨制-优雅草卓伊凡

互联网与无线广播&#xff1a;数字时代与模拟时代的通讯双轨制-优雅草卓伊凡 一、无线广播&#xff1a;穿越百年的电磁波通讯 1.1 无线广播的技术本质 当卓伊凡深入研究无线广播技术后&#xff0c;发现这套诞生于19世纪末的通讯系统蕴含着惊人的智慧。无线广播本质上是一种单…...

Java 集合线程安全

在高并发环境下&#xff0c;Java集合ArrayList和HashMap读写可能会出现安全问题。其中有几个解决办法&#xff1a; 使用Collections类方法Collections.synchronizedList和Collections.synchronizedMap在Java并发包中提供了CopyOnWriteArrayList和ConcurrentHashMap类 一、Arr…...

解决 Builroot 系统编译 perl 编译报错问题

本文提供一种修复 Builroot 系统编译 perl 编译报错途径 2025-05-04T22:45:08 rm -f pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/ln -s perldelta.pod pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/gcc -c -DPERL_CORE -fwrapv -fpcc-struct-return -pipe -f…...

理解计算机系统_并发编程(1)_并发基础和基于进程的并发

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 并发是一种非常重要的机制,用于处理多个指令流.特别是在网…...

详细案例,集成算法

以下是一个使用 随机森林&#xff08;RF&#xff09; 和 XGBoost 解决结构化数据分类问题的完整案例&#xff08;以泰坦尼克号生存预测为例&#xff09;&#xff0c;包含数据处理、建模和结果分析&#xff1a; 案例&#xff1a;泰坦尼克号乘客生存预测 目标&#xff1a;根据乘客…...

57认知干货:AI机器人产业

机器人本质上由可移动的方式和可交互万物的机构组成,即适应不同环境下不同场景的情况,机器人能够做到根据需求调整交互机构和移动方式。因此,随着人工智能技术的发展,AI机器人的产业也将在未来逐步从单一任务的执行者,发展为能够完成复杂多样任务的智能体。 在未来的社会…...

谷歌 NotebookLM 支持生成中文播客

谷歌 NotebookLM 支持生成中文播客。 2025 年 4 月 29 日&#xff0c;NotebookLM 宣布其 “音频概览”&#xff08;Audio Overviews&#xff09;功能新增 76 种语言支持&#xff0c;其中包括中文。用户只需将文档、笔记、研究材料等上传至 NotebookLM&#xff0c;然后在设置中选…...

【MySQL数据库】用户管理

目录 1&#xff0c;用户信息 2&#xff0c;创建/删除/修改用户 3&#xff0c;数据库的权限 MySQL数据库安装完之后&#xff0c;我们最开始时使用的都是 root 用户&#xff0c;其它用户通常无法进行操作。因此&#xff0c;MySQL数据库需要对用户进行管理。 1&#xff0c;用户…...

杜教筛原理,实现与时间复杂度分析

引例 洛谷 P4213 【模板】杜教筛 题目描述 给定一个正整数&#xff0c;求 a n s 1 ∑ i 1 n φ ( i ) ans_1\sum_{i1}^n\varphi(i) ans1​i1∑n​φ(i) a n s 2 ∑ i 1 n μ ( i ) ans_2\sum_{i1}^n \mu(i) ans2​i1∑n​μ(i) 输入格式 本题单测试点内有多组数据。 输入的…...

【时时三省】(C语言基础)怎样定义和引用一维数组

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 一维数组是数组中最简单的&#xff0c;它的元素只需要用数组名加一个下标&#xff0c;就能唯一地确定。如上面介绍的学生成绩数组s就是一维数组。有的数组&#xff0c;其元素要指定两个下标才…...

二叉搜索树的最近祖先(递归遍历)

235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:TreeNode*traversal(TreeNode*cur,TreeNode*p,TreeNode*q){if(curNULL){return NULL;}if(cur->val>p->val&&cur->val>q->val){TreeNode*lefttrave…...

蘑菇管理——AI与思维模型【94】

一、定义 蘑菇管理思维模型是一种形象地描述组织对待新员工或初入职场者的管理方式及相关现象的思维模型。它将新员工或初入职场者比作蘑菇&#xff0c;这些人在初期往往被置于阴暗的角落&#xff08;不受重视的部门&#xff0c;或打杂跑腿的工作&#xff09;&#xff0c;浇上…...

Uni-app 组件使用

在前端开发领域&#xff0c;能够高效地创建跨平台应用是开发者们一直追求的目标。Uni-app 凭借其 “一次开发&#xff0c;多端部署” 的特性&#xff0c;成为了众多开发者的首选框架。而组件作为 Uni-app 开发的基础单元&#xff0c;合理运用组件能够极大地提升开发效率和代码的…...

湖北理元理律师事务所:债务优化的合规化探索

在债务处置领域&#xff0c;合法性与有效性往往难以兼得。湖北理元理律师事务所通过标准化服务流程设计&#xff0c;尝试在二者间建立平衡点&#xff0c;其经验为行业提供了可参考的实践样本。 四阶服务模型 1.合规审查 核查债务来源合法性&#xff0c;重点筛查&#xff1a; …...

PISI:眼图1:眼图相关基本概念

0 英文缩写 TIE&#xff08;Time Interval Error&#xff09;时间间隔误差&#xff0c;UI&#xff08;Unit Interval&#xff09;单位间隔PDF&#xff08;Probability Density Function&#xff09;概率密度函数BER&#xff08;Bit Error Rate&#xff09;误码率TJ&#xff08…...

初试C++报错并解决记录

初试C报错并解决记录 报错开始解决问题记录1、考虑应该是没有指定dll位置 无法打开.lib文件1. 应该是没有包含Lib文件 问题解决➡ C 文件需要添加路径的位置记录&#xff1a; 显示调用dll文件位置注意问题解决➡调用位置&#xff1a; 调用人家的.h文件的方法&#xff08;项目使…...

Android运行时ART加载类和方法的过程分析

目录 一,概述 二,ART运行时的入口 一,概述 既然ART运行时执行的都是翻译DEX字节码后得到的本地机器指令了&#xff0c;为什么还需要在OAT文件中包含DEX文件&#xff0c;并且将它加载到内存去呢&#xff1f;这是因为ART运行时提供了Java虚拟机接口&#xff0c;而要实现Java虚…...

【力扣刷题记录】hot100错题本(一)

1. 简单题 我的答案&#xff1a;时间复杂度过高&#xff1a;O(N^3) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for num in nums:if (target - num) in nums:#多余for i in range(len(nums)):if nums[i] num :for j in range(i1,len(nu…...

Android运行时ART加载OAT文件的过程

目录 一,概述 1.1 OAT是如何产生的 一,概述 OAT文件是一种Android私有ELF文件格式&#xff0c;它不仅包含有从DEX文件翻译而来的本地机器指令&#xff0c;还包含有原来的DEX文件内容。这使得我们无需重新编译原有的APK就可以让它正常地在ART里面运行&#xff0c;也就是我们不…...

Python读取comsol仿真导出数据并绘图

文章目录 comsol数据导出python读取文件python绘制云图python进一步分析数据 完整代码 当我们使用comsol&#xff0c;ansys等仿真工具进行仿真后&#xff0c;难免需要对仿真结果进行导出并进一步处理分析。 今天小姜以comsol的一个简单磁场仿真为例&#xff0c;详细介绍如何对c…...

cloudfare+gmail 配置 smtp 邮箱

这里介绍有一个域名后&#xff0c;不需要服务器&#xff0c;就可以实现 cloudfare gmail 的 邮箱收发。 为什么还需要 gmail 的 smtp 功能&#xff0c;因为 cloudfare 默认只是对 email 进行转发&#xff0c;就是只能收邮件而不能发送邮件&#xff0c;故使用 gmail 的功能来进…...

【翻译、转载】使用 LLM 构建 MCP

资料来源&#xff1a; https://modelcontextprotocol.io/tutorials/building-mcp-with-llms 本文仅仅是翻译。 使用 LLM 构建 MCP 利用 Claude 等大型语言模型&#xff08;LLM&#xff09;加速您的 MCP 开发&#xff01; 本指南将帮助您使用 LLM 来构建自定义的模型上下文协…...

Python速成系列二

文章目录 Python 条件语句与循环结构详解一、条件语句&#xff08;if-elif-else&#xff09;1. 基本 if 结构2. if-else 结构3. if-elif-else 结构4. 嵌套条件语句5. 三元表达式&#xff08;条件表达式&#xff09; 二、循环结构1. while 循环2. for 循环3. 循环控制语句break …...

基于STM32的心电图监测系统设计

摘要 本论文旨在设计一种基于 STM32 微控制器的心电图监测系统&#xff0c;通过对人体心电信号的采集、处理和分析&#xff0c;实现对心电图的实时监测与显示。系统采用高精度的心电信号采集模块&#xff0c;结合 STM32 强大的数据处理能力&#xff0c;能够有效去除噪声干扰&a…...

线程池的线程数配置策略

目录 1. CPU密集型任务 2. IO密集型任务 3. 混合型任务 1. CPU密集型任务 特点&#xff1a;任务主要消耗CPU资源&#xff08;如计算、加密、压缩&#xff09;。 推荐线程数&#xff1a; 线程数 ≈ 物理核心数 1 / CPU - 1&#xff08;不知道哪个√&#xff09; 例如&#…...

分享一个Android中文汉字手写输入法并带有形近字联想功能

最近我写了一个Android版本的中文汉字手写输入法功能&#xff0c;并实现了汉字形近字联想功能&#xff0c;此手写输入法功能完全满足公司的需求。 之前小编用Android SurfaceView&#xff0c;运用canvas的Path画坐标轨迹&#xff0c;并结合使用一个叫汉王输入法的so库来识别手…...

C语言:文件操作

文件的概念 文件是计算机用于存储数据的工具&#xff0c;我们计算机磁盘上的数据是混乱的&#xff0c;但是我们计算机系统通过文件的方式记录数据在磁盘上的位置来将数据整齐划分。 文件的类型 文件有两种类型&#xff0c;数据文件与程序文件 程序文件是用来执行的文件&#…...

2024年第十五届蓝桥杯省赛B组Python【 简洁易懂题解】

2024年第十五届蓝桥杯省赛B组Python题解 一、整体情况说明 2024年第十五届蓝桥杯省赛B组Python组考试共包含8道题目&#xff0c;分为结果填空题和程序设计题两类。 考试时间&#xff1a;4小时编程环境&#xff1a;Python 3.x&#xff0c;禁止使用第三方库&#xff0c;仅可使…...

线程与进程深度解析:从fork行为到生产者-消费者模型

线程与进程深度解析&#xff1a;从fork行为到生产者-消费者模型 一、多线程环境下的fork行为与线程安全 1. 多线程程序中fork的特殊性 核心问题&#xff1a;fork后子进程的线程模型 当多线程程序中的某个线程调用fork时&#xff1a; 子进程仅包含调用fork的线程&#xff1…...

2025年第十六届蓝桥杯省赛B组Java题解【完整、易懂版】

2025年第十六届蓝桥杯省赛B组Java题解 题型概览与整体分析 题目编号题目名称题型难度核心知识点通过率&#xff08;预估&#xff09;A逃离高塔结果填空★☆☆数学规律、模运算95%B消失的蓝宝结果填空★★★同余定理、中国剩余定理45%C电池分组编程题★★☆异或运算性质70%D魔法…...

【NTN 卫星通信】NTN关键问题的一些解决方法(一)

1 概述 3GPP在协议23.737中对一些卫星通信需要面对的关键问题进行了探讨&#xff0c;并且讨论了初步的解决方法&#xff0c;继续来看看这些内容把。   问题包括&#xff1a; 1、大型卫星覆盖区域的移动性管理 2、移动卫星覆盖区域的移动性管理 3、卫星延迟 4、卫星接入的QoS …...

C++基础算法9:Dijkstra

1、概念 Dijkstra算法 是一种用于计算图中单源最短路径的算法&#xff0c;主要用于加权图&#xff08;图中边的权重可以不同&#xff09;中找出从起点到各个其他节点的最短路径。 Dijkstra算法的核心概念&#xff1a; 图的表示&#xff1a; 有向图&#xff1a;图的边是有方…...

5块钱的无忧套餐卡可以变成流量卡吗

电信的 5 块钱无忧套餐卡理论上可以变成流量卡&#xff0c;但会受到一些条件限制&#xff0c;以下是具体介绍&#xff1a; 中国电信无忧卡简介 中国电信无忧卡是电信推出的低月租套餐&#xff0c;月租仅 5 元&#xff0c;包含 200M 国内流量、来电显示和 189 邮箱&#xff0c;全…...

word页眉去掉线

直接双击页眉处于下面状态&#xff1a; 然后&#xff1a; 按CtrlshiftN即可&#xff01;去除...

Spark,Idea中编写Spark程序 2

Idea中编写Spark程序 一、修改pom.xml文件 <build><sourceDirectory>src/main/scala</sourceDirectory><testSourceDirectory>src/test/scala</testSourceDirectory> <!-- 添加必要的插件以打包scala程序--><plugins><plu…...

GTID(全局事务标识符)的深入解析

GTID(全局事务标识符)的深入解析 GTID(Global Transaction Identifier)是 MySQL 5.6 版本引入的一项核心功能,旨在解决传统主从复制中的痛点。它通过为每个事务赋予一个全局唯一的标识符,彻底改变了复制的管理方式。 一、传统复制的痛点 在 GTID 出现之前,MySQL 主从…...

Circular Plot系列(一): 环形热图绘制

针对近期多个粉丝咨询环形图的绘制&#xff0c;我意识到&#xff0c;我们似乎没有真正介绍过circle图&#xff0c;但这一类图确是非常常用的图&#xff0c;所以这里详细学习一下circle的绘制&#xff0c;使用的是circlize包&#xff0c;功能很完善&#xff1a;安装包, #https:/…...