文件集成数据存储使用文本文件中的数据
在预测性维护算法设计中,系统数据通常采用纯文本格式,例如逗号分隔值(CSV)。此示例显示如何创建和使用fileEnsembleDatastore
对象来管理以这种格式存储的数据集合。
整体数据
提取示例的压缩数据。
解压缩fleetdata.zip%提取压缩文件
整体由十个文件组成,fleetdata_01.txt,……, fleetdata_10.txt
,每个都包含车队中一辆车的数据。每个文件包含5个未标记的数据列,对应于以下值的每日读数:
一天结束时的里程表读数,以英里为单位
当天消耗的燃料,以加仑计
当天的最大转速
当天的最高发动机温度,以摄氏度为单位
一天结束时的引擎灯状态(0 =关,1 =开)
每个文件包含大约80到120天的操作数据。数据集是为本例人为制造的,与真实的舰队数据不对应。
配置集成数据存储
创建一个fileEnsembleDatastore
对象来管理数据。
位置= pwd;扩展=' . txt ';fensemble = fileEnsembleDatastore(位置,扩展);
配置集成数据存储以使用提供的功能readFleetData.m
从文件中读取数据。
目录(fullfile (matlabroot,“例子”,“predmaint”,“主要”))确保函数在路径上fensemble。ReadFcn = @readFleetData;
由于数据文件中的列是未标记的,因此函数readFleetData
将预定义的标签附加到相应的数据。配置集成数据变量以匹配中定义的标签readFleetData
.
fensemble。DataVariables = [“里程表”;“FuelConsump”;“MaxRPM”;“MaxTemp”;“EngineLight”];
这个函数readFleetData
还解析文件名以返回收集数据的汽车的ID,从1到10的数字。这个ID是集成自变量。
fensemble。IndependentVariables =“ID”;
指定所有数据变量和自变量作为从集成数据存储中读取的选定变量。
fensemble。SelectedVariables = [fensemble.IndependentVariables;fensemble.DataVariables];fensemble
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readFleetData WriteToMemberFcn: [] DataVariables: [5x1 string] IndependentVariables: "ID" ConditionVariables: [0x0 string] SelectedVariables: [6x1 string] ReadSize: 1 NumMembers: 10 LastMemberRead: [0x0 string] Files: [10x1 string]
读取集成数据
当你打电话时读
在集成数据存储上,它使用readFleetData
从第一个集成成员中读取所选变量。
Data1 = read(fensemble)
data1 =1×6表ID里程表FuelConsump MaxRPM MaxTemp EngineLight __ _________________ _________________ _________________ _________________ _________________ 120 x1时间表}{{120 x1时间表}{120 x1时间表}{120 x1时间表}{120}x1的时间表
检查并绘制里程表数据。
Odo1 = data1。里程表{1}
odo1 =120×1的时间表时间Var1 _______ ______ 0天180.04 1天266.76 2天396.01 3天535.19 4天574.31 5天714.82 6天714.82 7天821.44 8天1030.5 9天1213.4 10天1303.4 11天1416.9 12天1513.5 13天1513.5 14天1697.1 15天1804.6
情节(odo1.Time odo1.Var1)
计算该车队成员的平均汽油里程。这个值是最后一天的里程表读数,除以总消耗的燃料。
fuelConsump1 = data1.FuelConsump{1}.Var1;totalConsump1 = sum(fuelConsump1);totalMiles1 = odo1.Var1(end);mpg1 = totalMiles1/totalConsump1
Mpg1 = 22.3086
来自所有集成成员的批处理数据
如果你打电话读
同样,它从下一个集成成员读取数据并推进LastMemberRead
的属性fensemble
以反映该集成的文件名。您可以重复处理步骤来计算该成员的平均汽油里程。在实践中,自动化读取和处理数据的过程更有用。为此,将集成数据存储重置为未读取数据的状态。然后循环遍历集合并为每个成员执行读取和处理步骤,返回一个包含每辆车的ID和平均油耗的表。(如果您有并行计算工具箱™,您可以使用它来加快更大数据集合的处理速度。)
reset(fensemble) mpgData = 0 (10,2);为10个集成成员预分配数组Ct = 1;而Hasdata (fensemble) data = read(fensemble);odo = data.里程表{1}.Var1;fuelConsump = data.FuelConsump{1}.Var1;totalConsump = sum(燃料消耗);mpg = odo(end)/totalConsump1;ID = data.ID;mpgData(ct,:) = [ID,mpg];Ct = Ct + 1;结束mpgTable = array2table(mpgData,“VariableNames”,{“ID”,“英里”})
mpgTable =10×2表ID mpg __ ______ 1 22.309 2 19.327 3 20.816 4 27.464 5 18.848 6 22.517 7 27.018 8 27.284 9 17.149 10 26.37