You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

电流符号切换时重置电池累计电荷值的实现方法

问题解决:电池充放电累计电荷重置计算

你有如下电池恒流充放电数据集:

import numpy as np
import matplotlib.pyplot as plt

time = np.arange(0,100,1)
current_discharge = [-2 for i in np.arange(0,50,1)]
current_charge = [2 for i in np.arange(50,100,1)]
current = current_discharge + current_charge

需求是计算随时间变化的累计绝对电荷,要求在时间点50(电流从负切换为正)时将累计电荷重置为0,之后重新递增。你的原代码在时间点50后会从累计值中做减法,不符合需求。


修正后的代码

import numpy as np
import matplotlib.pyplot as plt

time = np.arange(0,100,1)
current_discharge = [-2 for i in np.arange(0,50,1)]
current_charge = [2 for i in np.arange(50,100,1)]
current = current_discharge + current_charge

cumsum = 0
totalcharge = []

for idx, i in enumerate(current):
    # 时间步长为1,单次电荷增量取绝对值,保证放电/充电阶段都累计正值
    dQ = abs(i * 1)
    # 定位电流切换点,重置累计值
    if idx == 50:
        cumsum = 0
    cumsum += dQ
    totalcharge.append(cumsum)

# 绘图展示
fig = plt.figure()
ax1 = plt.axes((0,0,1,0.5))
ax1.plot(time, current, label="电流 vs 时间")
ax1.plot(time, totalcharge, label="累计电荷 vs 时间")
ax1.set_xlabel("时间")
ax1.legend()
plt.show()

关键修改说明

  1. 电荷增量计算:直接取abs(i * 1),确保放电(负电流)和充电(正电流)阶段的电荷增量均为正值,匹配“绝对电荷”的需求。
  2. 重置逻辑:通过索引idx == 50精准定位电流切换节点,将累计值cumsum重置为0,之后重新累计充电阶段的电荷。
  3. 移除冗余的dQ_list,简化代码结构。

运行修正后的代码后,0-49秒累计放电电荷(从0增长到100),50秒时重置为0,50-99秒累计充电电荷(从0增长到100),完全符合需求。

内容的提问来源于stack exchange,提问作者ph1lipp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:46:15