hu18738640003 2024-05-27 14:35 采纳率: 20.9%
浏览 0

(标签-matlab)

把下面matlab代码转成python的


load('B0005.mat');
load('B0006.mat');
load('B0007.mat');
load('B0018.mat');
load('B0025.mat');
load('B0026.mat');
load('B0027.mat');
load('B0028.mat');
 
capacity_B5 = [];
capacity_B6 = [];
capacity_B7 = [];
capacity_B18 = [];
capacity_B25 = [];
capacity_B26 = [];
capacity_B27 = [];
capacity_B28 = [];
for i = 1:length(B0005.cycle)
    if strcmp(B0005.cycle(i).type,'discharge')
        capacity_B5 = [capacity_B5, B0005.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0006.cycle)
    if strcmp(B0006.cycle(i).type,'discharge')
        capacity_B6 = [capacity_B6, B0006.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0007.cycle)
    if strcmp(B0007.cycle(i).type,'discharge')
        capacity_B7 = [capacity_B7, B0007.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0018.cycle)
    if strcmp(B0018.cycle(i).type,'discharge')
        capacity_B18 = [capacity_B18, B0018.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0025.cycle)
    if strcmp(B0025.cycle(i).type,'discharge')
        capacity_B25 = [capacity_B25, B0025.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0026.cycle)
    if strcmp(B0026.cycle(i).type,'discharge')
        capacity_B26 = [capacity_B26, B0026.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0027.cycle)
    if strcmp(B0027.cycle(i).type,'discharge')
        capacity_B27 = [capacity_B27, B0027.cycle(i).data.Capacity];
    end
end
 
for i = 1:length(B0028.cycle)
    if strcmp(B0028.cycle(i).type,'discharge')
        capacity_B28 = [capacity_B28, B0028.cycle(i).data.Capacity];
    end
end
 
figure
plot(capacity_B5)
hold on
grid on
plot(capacity_B6,'color',[1,0.1,0.1])
plot(capacity_B7,'color',[1,0.5,0])
plot(capacity_B18,'k-')
legend('B0005','B0006','B0007','B0018')
xlabel('循环次数')
ylabel('容量')
 
figure
plot(capacity_B25)
hold on
plot(capacity_B26)
plot(capacity_B27)
plot(capacity_B28)
legend('B0025', 'B0026', 'B0027', 'B0028');
 
xlabel('循环次数')
ylabel('容量')
grid on;
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-27 14:35
    关注

    引自免费微信小程序:皆我百晓生

    在Python中,我们可以使用scipy.io.loadmat函数来加载MATLAB文件。然后,我们将按照与MATLAB代码相同的方式处理数据并绘制图形。以下是转换后的Python代码:

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.io import loadmat
    
    # 加载MATLAB文件
    data_B0005 = loadmat('B0005.mat')
    data_B0006 = loadmat('B0006.mat')
    data_B0007 = loadmat('B0007.mat')
    data_B0018 = loadmat('B0018.mat')
    data_B0025 = loadmat('B0025.mat')
    data_B0026 = loadmat('B0026.mat')
    data_B0027 = loadmat('B0027.mat')
    data_B0028 = loadmat('B0028.mat')
    
    # 提取数据
    capacity_B5 = []
    capacity_B6 = []
    capacity_B7 = []
    capacity_B18 = []
    capacity_B25 = []
    capacity_B26 = []
    capacity_B27 = []
    capacity_B28 = []
    
    # 处理数据
    for cycle in data_B0005['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B5.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0006['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B6.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0007['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B7.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0018['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B18.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0025['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B25.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0026['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B26.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0027['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B27.append(cycle['data']['Capacity'][0][0])
    
    for cycle in data_B0028['cycle']:
        if cycle['type'][0][0] == b'discharging':
            capacity_B28.append(cycle['data']['Capacity'][0][0])
    
    # 绘制第一张图
    plt.figure()
    plt.plot(capacity_B5)
    plt.hold(True)
    plt.grid(True)
    plt.plot(capacity_B6, color=[1, 0.1, 0.1])
    plt.plot(capacity_B7, color=[1, 0.5, 0])
    plt.plot(capacity_B18, color='k')
    plt.legend(['B0005', 'B0006', 'B0007', 'B0018'])
    plt.xlabel('循环次数')
    plt.ylabel('容量')
    
    # 绘制第二张图
    plt.figure()
    plt.plot(capacity_B25)
    plt.hold(True)
    plt.plot(capacity_B26)
    plt.plot(capacity_B27)
    plt.plot(capacity_B28)
    plt.legend(['B0025', 'B0026', 'B0027', 'B0028'])
    plt.xlabel('循环次数')
    plt.ylabel('容量')
    plt.grid(True)
    
    plt.show()
    

    这段代码首先导入所需的库,然后加载MATLAB文件,并提取出相应的数据。接着,它遍历每个电池的数据,根据类型('discharging')筛选出放电数据,并将这些数据添加到对应的列表中。最后,它分别绘制了两张图表,一张用于展示B0005、B0006、B0007和B0018的数据,另一张用于展示B0025、B0026、B0027和B0028的数据。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月27日