代码功能:
1、弹出文件夹选择对话框,选择文件所在位置。
2、加载指定名称文件。
例子:
加载NASA锂电池数据集,文件为B0005、B0006、B0007、B0018.
每个文件下面都是一个同名的结构体,该结构体下是一个名为cycle的结构体;cycle结构体包含很多字段。
目标是找到type字段中所有‘discharge’对应data结构体中的Capacity数据。
数据集来源:
https://ti.arc.nasa.gov/tech/dash/groups/pcoe/battery-prognostics/algorithms/
或 https://download.csdn.net/download/ckzhb/10285027
源代码:
http://download.csdn.net/download/ckzhb/10229911
数据集结构如下图:
function [data] = loadBatteryData(datasetNumber)
% 加载锂电池数据集
% Input:
% datasetNumber-两位数即 05 06 07 18
% Output:
% data - 电池容量
% Usage:
% 选择锂电池数据集mat文件所在的文件夹;
R = uigetdir('*.mat','Choose battery data'); %选择数据集所在文件夹
if datasetNumber<10
name = ['B000' num2str(datasetNumber)];
load([R '\B000' num2str(datasetNumber) '.mat'],name);
end
if datasetNumber>9
name = ['B00' num2str(datasetNumber)];
load([R '\B00' num2str(datasetNumber) '.mat'],name);
end
s = eval(name);
temp = s.cycle;
for i =1:length(temp)
if strcmp(temp(i).type, 'discharge')
data(i) = temp(i).data.Capacity;
end
end
index = find(data==0);
data(index)=[];
end
代码详解:
1、R = uigetdir('*.mat','Choose battery data');
uigetdir函数得到指定文件类型(第一个参数)的文件夹位置。第二个参数是对话框标题。返回字符串。
2、name = ['B000' num2str(datasetNumber)]; 构造加载的文件的名字,是一个字符串格式
3、load([R '\B000' num2str(datasetNumber) '.mat'],name);
加载mat文件,[R '\B000' num2str(datasetNumber) '.mat']是完整的文件路径,注意中括号和引号!!
下面步骤根据文件中的变量具体格式进行调整,不做详细介绍。
4、s = eval(name); 将字符串转化为 变量名。