主要内容

文件集成数据存储使用文本文件中的数据

在预测性维护算法设计中,系统数据通常采用纯文本格式,例如逗号分隔值(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)

图中包含一个轴对象。axis对象包含一个line类型的对象。

计算该车队成员的平均汽油里程。这个值是最后一天的里程表读数,除以总消耗的燃料。

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

另请参阅

|

相关的话题