主要内容

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

在预测性维护算法设计中,系统数据通常采用纯文本格式,如逗号分隔值(CSV)。这个例子展示了如何创建和使用fillensembledataStore.对象以管理以这种格式存储的数据的集合。

合并数据

提取示例的压缩数据。

解压缩fleetdata.zip解压压缩文件

这个集合由十个文件组成,fleetdata_01.txt,……, fleetdata_10.txt,每个都包含一辆汽车的一辆汽车的数据。每个文件包含五列数据列,对应于以下值的每日读数:

  • 一天结束时的里程表读数,单位是英里

  • 那天消耗的燃料,以加仑计

  • 一天的最高转速

  • 最大的发动机温度当天,中摄氏度

  • 发动机灯状态在一天结束时(0 = OFF,1 = ON)

每个文件包含约80到大约120天的操作。为该示例进行了人工制造的数据集,并且不对应于真实的舰队数据。

配置合奏数据存储

创建一个fillensembledataStore.对象管理数据。

位置= PWD;延伸='。文本';fensemble = fileEnsembleDatastore(位置、扩展);

配置集合数据存储才能使用提供的功能readfleetdata.m.从文件中读取数据。

AddPath(FullFile(MatlaBroot,“例子”'predmaint'“主要”)))%确保函数在路径上fensemble。ReadFcn = @readFleetData;

因为数据文件中的列未标记,所以功能readfleetdata.将预定义的标签附加到相应的数据。配置集合数据变量以匹配定义的标签readfleetdata.

fensemble.datavariables = [“里程表”“燃料consump”“maxrpm”“maxtemp”“Enginelight”];

这个函数readfleetdata.还解析文件名,以返回收集数据的汽车的ID,一个从1到10的数字。这个ID是集成自变量。

fensemble。IndependentVariables =“ID”

根据所选变量指定所有数据变量和独立变量,以便从合并数据存储中读取。

fensemble.selectedvariables = [fensemble.indepentvariables; fensemble.datavariables];fensemble.
fensemble = fileEnsembleDatastore与属性:ReadFcn: @readFleetData WriteToMemberFcn: [] DataVariables: [5x1 string] IndependentVariables: "ID"条件变量:[0x0 string] SelectedVariables: [6x1 string] ReadSize: 1 NumMembers: 10 LastMemberRead: [0x0 string] Files: [10x1 string]

阅读集合数据

你打电话时在集合数据存储上,它使用readfleetdata.从第一集合成员读取所选变量。

data1 =阅读(fensemble)
data1 =1×6表ID Idometer CuerConsump Maxrpm Maxtemp Enginelight _________________ _________________ _________________ _________________ 1 {120x1时间表} {120x1时间表} {120x1时间表} {120x1时间表}

检查并绘制里程表数据。

ODO1 = data1.odometer {1}
ODO1 =120×1时间表时间Var1  _______ ______ 0天180.04 535.19 396.01 266.76 1天2天3天4天7天574.31 5天714.82 6天714.82 1303.4 1213.4 821.44 1030.5 8天9天10天11天1416.9 12天1513.5 13天14天1513.5 1697.1 1804.6⋮15天
情节(odo1.Time odo1.Var1)

图包含轴对象。轴对象包含类型线的对象。

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

Culconsump1 = data1.fuelconsump {1} .var1;totalconsump1 = sum(燃料consump1);TotalMiles1 = ODO1.VAR1(END);MPG1 = TotalMiles1 / TotalConsump1
MPG1 = 22.3086.

来自所有集合成员的批处理数据

如果你打电话同样,它从下一个集合成员读取数据并推进莱特曼弗雷德财产fensemble.反映该合奏的文件名。您可以重复处理步骤以计算该成员的平均气体里程。在实践中,可以自动化读取和处理数据的过程更有用。为此,将集合数据存储重置为未读取数据的状态。然后循环通过集合并为每个成员执行读取和处理步骤,返回包含每辆汽车ID和平均气体里程的表。(如果您有并行计算工具箱™,则可以使用它来加快更大数据集合的处理。)

重置(fensemble)mpgdata = zeros(10,2);10个集合成员的%preallocate阵列ct = 1;Hasdata (fensemble) data = read(fensemble);辛癸酸甘油酯= data.Odometer {1} .Var1;fuelConsump = data.FuelConsump {1} .Var1;totalConsump =总和(fuelConsump);英里/加仑=辛癸酸甘油酯(结束)/ totalConsump1;ID = data.ID;: mpgData (ct) = (ID、mpg);Ct = Ct + 1;结尾mpgTable = array2table (mpgData,'variablenames', {'ID''mpg'})
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

也可以看看

|

相关的话题