writeToLastMemberRead

写数据到一个数据存储合奏的构件

描述

writeToLastMemberRead(系综名称,值写入数据中指定的一个或多个名称,值对参数的合奏数据存储的最后读取的构件。最后读的成员是最近使用所访问的成员命令。(看到数据合奏状态监测和预测性维护。)每个的名字必须在属性中的条目匹配ensemble.DataVariables.该函数写相应的价值到集合数据存储。

  • 如果系综是一个simulationEnsembleDatastore对象,然后writeToLastMemberRead将数据写入到对应于所述最后一个读取合奏构件的MAT-文件(ensemble.LastMemberRead)。

  • 如果系综是一个fileEnsembleDatastore对象,然后writeToLastMemberRead使用由属性标识的函数ensemble.WriteToMemberFcn写入数据。如果该属性没有定义,那么writeToLastMemberRead产生一个错误。

这句法不可当ReadSize财产系综大于1。使用writeToLastMemberRead(合奏,数据)代替。

writeToLastMemberRead(系综数据在表中的数据写入到最后阅读的集合构件。该表变量必须在属性相匹配的条目ensemble.DataVariables.

例子

全部收缩

您可以在合奏数据存储处理数据和派生变量添加到集合成员。对于这个例子,处理的可变值来计算一个标签,该标签指示合奏构件是否包含具有一个故障存在获得的数据。然后,该标签添加到合奏。

对于本例,使用以下代码创建simulationEnsembleDatastore对象,该对象使用以前在各种故障值上运行Simulink®模型生成的数据。万博1manbetx(看到generateSimulationEnsemble。)该整体包括用于模型参数的五个不同的值的模拟数据,ToothFaultGain.将模型配置为将模拟数据记录到一个名为的变量中logsout在为本例存储的mat文件中simEnsData.zip.由于数据量大,所以拉开拉链操作可能需要一两分钟。

拉开拉链simEnsData.zip%压缩文件解压缩合奏= simulationEnsembleDatastore (pwd,“logsout”
合奏= simulationEnsembleDatastore与属性:DataVariables:[5X1字符串] IndependentVariables:为0x0字符串] ConditionVariables:为0x0字符串] SelectedVariables:[5X1字符串] READSIZE:1个NumMembers:5 LastMemberRead:为0x0字符串]文件:[5X1字符串]

从在合奏第一部件读取数据。该软件确定哪个合奏是第一构件,并更新属性ensemble.LastMemberRead以反映相应文件的名称。

数据=读(合奏)
数据=表1×5PMSignalLogName SimulationInput SimulationMetadata测速振动_______________ ______________________________ _________________________________ ___________________ ___________________ { 'logsout'} {1x1的Simulink.Sim万博1manbetxulationInput} {1x1的Simulink.SimulationMetadata} {20202x1时间表} {20202x1时间表}

默认情况下,集成数据中存储的所有变量都被指定为SelectedVariables.因此,返回的表行包含所有集成变量,包括一个变量SimulationInput,其中包含万博1manbetxSimulink.SimulationInput对象,该对象为该集成成员配置了模拟。该对象包括ToothFaultGain用于集合成员的值,存储在其数据结构中变量属性。检查该值。(有关仿真配置是如何存储的更多信息,请参阅万博1manbetxSimulink.SimulationInput)。

data.SimulationInput {1}
属性:ModelName: 'TransmissionCasingSimplified' InitialState: [0x0 Simulink.op。万博1manbetxModelParameters: [0x0 Simulink.Simulation]。万博1manbetx块参数:[0x0 Simulink.Simulation]万博1manbetx变量:[1x1 Simulink.Simulation.]万博1manbetx变量]PreSimFcn: [] PostSimFcn: [] UserString: "
Inputvars = data.SimulationInput {1} .Variables;Inputvars.Name
ans = ' ToothFaultGain '
Inputvars.Value
ANS = -2

假设你要转换的ToothFaultGain对于每个集合构件为是否进行了齿故障的二进制指示符值是存在的。从系统的经验,进一步,你知道假设齿故障增益值小于0.1的幅度小到足以被认为是健康的运行。转换该合奏的增益值到一个指示符,对于-0.1 <增益<0.1,和图1(故障),否则为0(无故障)。

sT = abs(inputvar . value) < 0.1;

要追加新的齿故障指示器到相应的合奏数据,第一扩大在合奏数据变量列表以包括用于指示的变量。

ensemble.DataVariables= [ensemble.DataVariables;“ToothFault”]。ensemble.DataVariables
ANS =6 x1字符串“PMSignalLogName” “SimulationInput” “SimulationMetadata” “测速”, “震动” “ToothFault”

此操作在概念上等价于添加一个列集合的数据的表。现在DataVariables包含新的变量名,使用推导出的值分配给该部件的该列writeToLastMemberRead.

writeToLastMemberRead(合奏,“ToothFault”,ST);

在实践中,要齿故障指示器追加到集合的每一个成员。要做到这一点,乐团数据存储重置为未读状态,这样在第一集合构件下一次读操作开始。然后,通过所有的集合成员循环,计算ToothFault针对每个成员并将其附加。该重启操作不变ensemble.DataVariables,所以“ToothFault”仍然在那个列表中。

复位(合奏);ST = FALSE;hasdata(合奏)数据=读(合奏);InputVars = data.SimulationInput {1} .Variables;TFGain = InputVars.Value;ST = ABS(TFGain)<0.1;writeToLastMemberRead(合奏,“ToothFault”,ST);结束

最后,指定新的齿故障指示器如在合奏数据存储区的状态变量。可以使用此标识来跟踪,并且是指变量表示在其下产生的部件的数据条件的数据集合。

ensemble.ConditionVariables = {“ToothFault”};ensemble.ConditionVariables
ans = " ToothFault "

您可以将新变量添加到ensemble.SelectedVariables当你想要读出来做进一步的分析时。例如,演示了更多操作和分析存储在a中的数据的方法simulationEnsembleDatastore对象,看到采用Simu万博1manbetxlink生成故障数据.

创建存储在MATLAB文件数据的文件数据存储合奏,并与告诉软件如何读取和写入到数据存储的功能配置。(有关配置文件数据存储集成的详细信息,请参阅带有测量数据的文件集成数据存储)。

%创建合奏数据存储,它指向当前文件夹中的数据文件拉开拉链fileEnsData.zip%压缩文件解压缩位置= PWD;延长=“.mat”;fensemble = fileEnsembleDatastore(位置,延伸部);%指定数据和条件变量fensemble.DataVariables = [“GS”;“老”;“加载”;“率”]。fensemble.ConditionVariables =“标签”;有用于读出和写入的变量数据的功能配置%让addpath(完整文件(matlabroot,'例子''predmaint'“主要”))%确认功能上的路径fensemble.ReadFcn = @readBearingData;fensemble.WriteToMemberFcn = @writeBearingData;

该功能告诉writeToLastMemberRead命令如何与数据文件组成合奏互动。因此,当你调用命令,它使用readBearingData阅读中的所有变量fensemble.SelectedVariables.对于这个示例,readBearingData提取请求变量从结构,轴承,并存储在文件中其他变量。这也解析为数据的故障状态的文件名。

指定变量读取,并从乐团的第一个成员阅读。

fensemble.SelectedVariables = [“GS”;“加载”;“标签”]。数据=读(fensemble)
数据=1×3表标签gs负载________售予__“错误的”{5000 x1双}0

您现在可以根据需要处理来自成员的数据。对于本例,计算存储在变量中的信号的平均值GS.从返回的表中提取数据.

gsdata = data.gs {1};gsmean =意味着(gsdata);

你可以写的平均值gsmean返回数据文件作为一个新变量。为此,首先展开集成中的数据变量列表,以包含新值的变量。调用新变量gsMean.

fensemble.DataVariables = [fensemble.DataVariables;“gsMean”]
fensemble = fileEnsembleDatastore属性:ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: x1字符串[5]IndependentVariables: [0 x0字符串]ConditionVariables:“标签”SelectedVariables: [3 x1字符串]ReadSize: 1 NumMembers: 5 LastMemberRead:“/ tmp / Bdoc20a_1326390_165224 / tp7b0cac28 / predmaint-ex34165887 / FaultData_01。mat"文件:[5x1字符串]

接着,将得到的平均值写入到对应于最后的读集合构件的文件。(看到数据合奏状态监测和预测性维护)。当你打电话writeToLastMemberRead,它将数据转换为结构并调用fensemble.WriteToMemberFcn将数据写入到文件中。

writeToLastMemberRead(fensemble,“gsMean”,gsmean);

调用再次前进最后读构件指示器在合奏的下一个文件,并从该文件中读取的数据。

数据=读(fensemble)
数据=1×3表标签gs负载________售予__“错误的”{5000 x1双}50

您可以通过检查加载表中的变量。在这里,它的值是50,而在之前读取的成员中,它是0。

您可以重复的处理步骤,以计算和追加的平均值为这个集合构件。在实践中,它是更加有用的自动化的读取,处理和写入数据的过程。要做到这一点,复位合奏中,没有数据被读取的状态。然后通过综循环和执行读,处理和写为每个成员的步骤。

复位(fensemble)hasdata(fensemble) data = read(fensemble);gsdata = data.gs {1};gsmean =意味着(gsdata);writeToLastMemberRead(fensemble,“gsMean”,gsmean);结束

hasdata命令返回当乐团的每一个成员都已经被读取。现在,在合奏的每个数据文件包括gsMean变量派生自数据GS在该文件中。为您开发预测性维护的算法,可以使用这样的循环来提取和处理数据技术,从您的合奏文件。用于更详细地示出了使用在算法开发过程文件合奏数据存储的一个示例,请参见滚动轴承故障诊断.该示例还显示了如何使用并行计算工具箱™加快大数据合奏的处理。

以确认衍生变量存在于文件合奏数据存储,来自第一和第二集合成员读取它。要做到这一点,再次复位合奏,以及新的变量添加到选定的变量。在实践中,已经计算得出的值之后,就可以在不重读未处理的数据,这可能需要显著内存空间,以只读这些值是有用的。对于这个例子,读取所选变量包括所述新的变量,gsMean,但不包括未处理的数据,GS.

复位(fensemble)fensemble.SelectedVariables = [“标签”;“加载”;“gsMean”]。DATA1 =读(fensemble)
数据1 =1×3表标签负载gsMean ________ ____ ________ “故障” 0 -0.22648
DATA2 =读(fensemble)
数据2 =1×3表标签负载gsMean ________ ____ ________ “故障” 50 -0.22937
rmpath(完整文件(matlabroot,'例子''predmaint'“主要”))%重置路径

输入参数

全部收缩

合奏数据存储到数据变量添加到,指定为:

writeToLastMemberRead将数据写入到指定的合奏的最后读取部件,由所识别的LastMemberRead集合的性质。最后读取的合集成员是最近使用命令。(看到数据合奏状态监测和预测性维护)。

新的数据写入到当前合奏构件,指定为.例如,假设你已经计算出两个值要添加到当前成员:存储为MATLAB矢量®工作区变量Afilt和一个标量为存储一个平均值.使用以下命令构造数据.

data =表(Afilt Amean,“VariableNames”,{'Afilt''一个平均值'});

表中的行数必须与ReadSize财产系综.默认情况下,ReadSize= 1,并且你写一个单一的表行到单个合奏构件。当您配置系综若要同时读取多个成员,必须写入相同数量的成员。例如,如果ReadSize= 3,然后数据是一个三行表。

限制

  • 当你使用simulationEnsembleDatastore来管理在远程位置的数据,诸如使用Amazon S3™(简单存储服务)云存储,Windows Azure的®Blob存储,和Hadoop®分布式文件系统(HDFS™),您不能使用writeToLastMemberRead将数据添加到集成数据存储中。

介绍了在R2018a