文件合奏数据存储与实测数据

在预测维护算法的设计,你经常处理大量不同条件下从你的系统运行采集数据的工作。该fileEnsembleDatastore对象可以帮助您与这样的数据管理和交互。在这个例子中,创建一个fileEnsembleDatastore对象,该对象指向磁盘上的集成数据。将其配置为从集合中读取数据并将数据写入集合的函数。

数据文件的结构

在这个例子中,有一个包含从轴承系统的健康运行数据两个数据文件,baseline_01.matbaseline_02.mat.您还有三个数据文件包含来自同一系统的错误数据,FaultData_01.matFaultData_02.mat,FaultData_03.mat.实际上,您可能有更多的数据文件。

每个数据文件包含一个数据结构,轴承.从第一个健康数据集中加载和检查数据结构。

解压缩fileEnsData.zip提取压缩文件加载baseline_01.mat轴承
轴承=结构体字段:SR:97656个GS:[5000x1双]负载:270率:25

该结构包含加速度计数据的矢量gs,样本率SR在该数据记录,以及其他数据变量。

创建和配置文件集成数据存储

要使用这些数据进行预测性维护算法设计,首先创建一个文件集合数据存储,该数据存储指向当前文件夹中的数据文件。

fensemble = fileEnsembleDatastore (pwd,“.mat”);

之前,你可以在合奏的数据进行交互,你必须创建告诉软件如何处理数据文件读取变量入MATLAB®工作区和写入数据回文件的函数。对于此示例,使用下面所提供的功能:

  • readBearingData-从结构中提取被请求的变量,轴承,并存储在文件中其他变量。这个功能也为解析数据的故障状态的文件名。该函数返回一个包含用于每个请求的变量一个表变量的表行。

  • writeBearingData-获取一个结构,并将其变量作为单独存储的变量写入数据文件。

将这些函数赋给ReadFcnWriteToMemberFcn合奏数据存储区,分别的性质。

目录(fullfile (matlabroot,“例子”'predmaint'“主要”))%确认功能上的路径fensemble。ReadFcn= @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;

最后,通过设置集成的属性来识别数据变量和条件变量。

fensemble.DataVariables = [“gs”;“SR”;“负载”;“率”];fensemble。ConditionVariables = [“标签”;“文件”];

检查合奏。函数和变量名被分配给适当的属性。

fensemble
fensemble = fileEnsembleDatastore与属性:ReadFcn:@readBearingData WriteToMemberFcn:@writeBearingData DataVariables:[4X1字符串] IndependentVariables:为0x0字符串] ConditionVariables:[2×1字符串] SelectedVariables:为0x0字符串] READSIZE:1个NumMembers:5 LastMemberRead:为0x0字符串]文件:[5X1字符串]

从集合成员读取数据

您指定的功能告诉writeToLastMemberRead命令如何与数据文件组成合奏数据存储交互。因此,当你调用命令,它使用readBearingData阅读中的所有变量fensemble.SelectedVariables.

指定要读取的变量,并从集成的第一个成员读取它们。该命令读取来自第一集合的成员数据到在MATLAB工作区中的表行。软件确定第一读取哪个合奏构件。

fensemble.SelectedVariables = [“文件”;“标签”;“gs”;“SR”;“负载”;“率”];data =阅读(fensemble)
数据=1×6表标签文件gs sr售予_____ _____ _____负荷率________ * * *“错误”“FaultData_01”{5000 x1双}48828 0 25

将数据写入集合成员

假设你要分析的加速度计数据gs通过计算其功率谱,然后写功率谱数据回合奏。要做到这一点,首先提取从表中的数据和计算的频谱。

gsdata = data.gs {1};SR = data.sr;[PDATA,fpdata] = pspectrum(gsdata,SR);PDATA = 10 * LOG10(PDATA);%转换为dB

你可以写出频率向量fpdata和功率谱PDATA将数据文件作为单独的变量。首先,将新变量添加到集成数据存储中的数据变量列表中。

fensemble.DataVariables = [fensemble.DataVariables;“频率”;“谱”];fensemble.DataVariables
ans =6x1的字符串“GS”“SR”,“负载”,“速率”,“频率”“光谱”

接下来,将新值写入与上次读取的合集成员对应的文件。当你打电话writeToLastMemberRead,它将数据转换为结构并调用fensemble.WriteToMemberFcn将数据写入到文件中。

writeToLastMemberRead(fensemble,“频率”,fpdata,'光谱'中,pdata);

您可以将新变量添加到fensemble.SelectedVariables或根据需要用于标识变量的其他属性。

调用再次从集成数据存储中的下一个文件中读取数据并更新属性fensemble.LastMemberRead.

data =阅读(fensemble)
数据=1×6表标签文件GS SR负载率________ ______________ _______________ _____ ____ “故障”, “FaultData_02”{5000x1双} 48828 50 25

您可以确认这个数据是从不同的成员由加载表中的变量。在这里,它的值是50,而在之前读取的成员中,它是0。

从所有集合成员批处理数据

您可以重复的处理步骤,以计算和追加频谱此集合构件。在实践中,它是更加有用的自动化的读取,处理和写入数据的过程。要做到这一点,乐团数据存储重置为无数据已被读取的状态。(该重置操作不会更改fensemble.DataVariables,其中包含您已经添加的两个新变量。)然后循环整个集成,并为每个成员执行读、处理和写步骤。

复位(fensemble)hasdata(fensemble)数据=读(fensemble);gsdata = data.gs {1};SR = data.sr;[PDATA,fpdata] = pspectrum(gsdata,SR);writeToLastMemberRead(fensemble,“频率”,fpdata,'光谱'中,pdata);结束

hasdata命令返回当乐队的每个成员都被念过的时候。现在,集成中的每个数据文件都包含光谱频率从该文件中的加速度计数据导出的变量。为您开发预测性维护的算法,可以使用这样的循环来提取和处理数据技术,从您的合奏文件。用于更详细地示出了使用在算法开发过程文件合奏数据存储的一个示例,请参见滚动轴承故障诊断.该示例还展示了如何使用并行计算工具箱™来加速大型集成的处理。

要确认派生变量存在于文件集成数据存储中,请从第一个和第二个集成成员中读取它们。为此,再次重置集合,并将新变量添加到所选变量中。实际上,在您计算了派生值之后,只读取那些值而不重新读取未处理的数据是很有用的,因为这会占用大量内存空间。对于本例,读取包含新变量但不包含未处理数据的选定变量,gs.

复位(fensemble)fensemble.SelectedVariables = [“标签”“负载”“频率”“谱”];data1 =阅读(fensemble)
data1 =1×4表标签负载频率频谱________ ____ _______________ _______________ “故障” 0 {4096x1双} {4096x1双}
data2 =阅读(fensemble)
data2 =1×4表标签负载频率频谱________ ____ _______________ _______________ “故障” 50 {4096x1双} {4096x1双}
rmpath (fullfile (matlabroot,“例子”'predmaint'“主要”))%重置路径

也可以看看

||

相关话题