simulationEnsembleDatastore

所生成的集成数据generateSimulationEnsemble或者通过记录模拟数据万博1manbetx

描述

一个simulationEnsembleDatastore对象是一个专门用于开发使用模拟数据的状态监视和预测性维护算法的数据存储。

该对象指定存储在MATLAB数据文件集合(MAT-files)中的数据变量、自变量和条件变量。数据文件包含万博1manbetxSimulink.SimulationData.Dataset在Simulink中记录数据的结果变量万博1manbetx®模型模拟。

有关说明使用模拟集成数据存储的详细示例,请参见生成和使用模拟数据集合.有关预测性维护工具箱™中数据集成的一般信息,请参见用于状态监测和预测性维护的数据集成

创建

要创建一个simulationEnsembleDatastore对象:

  1. 从Simulink模型中生成并记录仿真数据。万博1manbetx你可以使用generateSimulationEnsemble或任何其他方式的日志模拟到磁盘。

  2. 创建一个simulationEnsembleDatastore对象,该对象指向使用simulationEnsembleDatastore命令(在下面描述)。

如果您有先前生成的模拟数据generateSimulationEnsemble或者其他方法,您可以使用创建函数simulationEnsembleDatastore可以随时创建新的模拟集成数据存储对象。

描述

例子

系综= simulationEnsembleDatastore (位置使用先前生成的数据创建模拟集合generateSimulationEnsemble指定的文件夹中位置.该函数从存储在生成的mat文件中的信息识别生成数据中的集成变量。函数填充DataVariables而且SelectedVariables的属性系综用这些集合变量的名字。

例子

系综= simulationEnsembleDatastore (位置signallog使用signallog以确定mat文件中的哪个变量包含日志信号。方法中指定的变量名信号记录生成数据的Simulink模型的配置参数。万博1manbetx指定此变量允许集成将这些信号视为集成数据变量,而不是signallog变量本身。mat文件中的其他变量也作为集成数据变量返回。

系综= simulationEnsembleDatastore (位置signallog名称,值指定附加的属性使用一个或多个名称-值对参数的对象。例如,使用“IndependentVariables”,“年龄”;“ID”)指定创建对象时的自变量。

输入参数

全部展开

要在其中存储模拟数据的位置的文件路径,指定为字符串或字符向量。文件路径可以是MATLAB支持的任何位置万博1manbetx®数据存储,包括指向远程位置的IRI路径。然而,当你使用simulationEnsembleDatastore要管理远程数据,不能使用writeToLastMemberRead向集成数据存储添加数据。有关在MATLAB中使用远程数据的更多信息,请参见使用远程数据(MATLAB)

例子:pwd + "\simResults"

记录信号的变量名,指定为字符串或字符向量。这个输入参数告诉我们simulationEnsembleDatastore存储的mat文件中的哪个数据变量包含日志模拟数据。变量名在信号记录生成数据的Simulink模型的配置参数。万博1manbetx当你使用generateSimulationEnsemble为集成生成模拟数据,每个生成的mat文件包含一个变量,PMSignalLogName,指定记录信号的变量名。

例子:“logsout”

属性

全部展开

集合中的数据变量,指定为字符串数组。数据变量是集合成员的主要内容。数据变量可以包括用于分析和开发预测性维护算法的测量数据或派生数据。例如,您的数据变量可能包括测量或模拟振动信号和派生值,如平均振动值或峰值振动频率。实际上,数据变量、自变量和条件变量都是不同的变量集。

simulationEnsembleDatastore的初始值DataVariables生成的数据中所有记录信号的名称generateSimulationEnsemble

您还可以指定DataVariables使用字符向量的单元格数组,例如{“振动”;“转速计”},但变量名总是存储为字符串数组,(“振动”;“转速器”).如果指定一个由变量名组成的矩阵,则该矩阵将被平展为列向量。

集合中的自变量,指定为字符串数组。通常使用自变量来对集合中的成员排序。例如时间戳、操作小时数或行驶里程。将此属性设置为集成中此类变量的名称。实际上,数据变量、自变量和条件变量都是不同的变量集。

您还可以指定IndependentVariables使用字符向量的单元格数组,例如{“时间”,“年龄”},但变量名总是存储为字符串数组,["时间";“时代”).如果指定一个由变量名组成的矩阵,则该矩阵将被平展为列向量。

集合中的条件变量,指定为字符串数组。根据收集集合成员时的故障情况或其他运行情况,使用条件变量对集合成员进行标记。实际上,数据变量、自变量和条件变量都是不同的变量集。

您还可以指定ConditionVariables使用字符向量的单元格数组,例如{“GearFault”;“温度”},但变量名总是存储为字符串数组,[" GearFault”;“温度”).如果指定一个由变量名组成的矩阵,则该矩阵将被平展为列向量。

要从集合中读取的变量,指定为字符串数组。类时,使用此属性指定将哪些变量提取到MATLAB工作区命令从集成中读取数据。中指定的每个名称返回包含表变量的表行SelectedVariables.例如,假设你有一个集合,系综,它包含6个变量,你只想读其中的两个,振动而且FaultState.设置SelectedVariables财产和电话

合奏。选择edVariables = [“振动”“FaultState”];数据=读取(集成)

SelectedVariables变量的任意组合都可以是DataVariablesConditionVariables,IndependentVariables属性。如果SelectedVariables是空的,产生一个错误。

simulationEnsembleDatastore的初始值SelectedVariables生成的数据中所有记录信号的名称generateSimulationEnsemble

你可以指定SelectedVariables使用字符向量的单元格数组,例如{“振动”;“转速计”},但变量名总是存储为字符串数组,(“振动”;“转速器”).如果指定一个由变量名组成的矩阵,则该矩阵将被平展为列向量。

要一次性从集合数据存储中读取的成员数,指定为一个小于集合中成员总数的正整数。默认情况下,命令返回包含来自一个集成成员的数据的单行表。从单个成员中读取数据操作,将此属性设置为一个大于1的整数值。例如,如果ReadSize= 3,则返回一个三行表,其中每一行包含来自不同集成成员的数据。如果少于ReadSize那么,成员是未读的返回一个表,其行数与剩余成员的行数相同。

集成数据存储属性LastMemberRead包含最近时间内读取的所有文件的名称操作。例如,如果ReadSize= 3,那么a操作集LastMemberRead到包含三个文件名的字符串向量。

当你使用writeToLastMemberRead,将要写入的数据指定为行数等于的表ReadSize.的writeToLastMemberRead命令更新指定的成员LastMemberRead,将一个表行写入每个指定的文件。

改变了ReadSize属性还将集合重置为未读状态。例如,假设您每次读取一个集合成员(ReadSize= 1),然后更改ReadSize为3。下一个操作从前三个集成成员返回数据。

此属性是只读的。

集合中的成员数,指定为正整数。

此属性是只读的。

最后一个集成成员读入MATLAB工作区的文件名,指定为字符串。当您使用命令从集成数据存储中读取数据,软件确定接下来要读取哪个集成成员,并从相应的文件中读取数据。的LastMemberRead属性包含最近读取的文件的路径。当集成数据存储尚未被读取或被重置时,LastMemberRead是一个空字符串。

当你打电话时writeToLastMemberRead要将数据添加回集成数据存储,该函数将写入LastMemberRead

默认情况下,每次从一个集成成员读取数据ReadSize属性为1)ReadSize> 1,LastMemberRead是否包含最近读取的所有文件的路径的字符串数组操作。

此属性是只读的。

集合数据存储中的文件列表,指定为长度的列字符串向量NumMembers.每个条目都包含到数据存储中文件的完整路径。文件的顺序是命令读取集合成员。

例子:[" C: \ \ Data_01.csv数据”;“C: \ Data \ Data_02.csv”;“C: \ \ Data_03.csv数据”)

对象的功能

而且writeToLastMemberRead函数专门用于预测性维护工具箱集成数据。其他功能,如重置而且hasdata,与与数据存储对象。要分区集成数据存储,请使用分区(n, ds指数)的语法分区函数。

从集成数据存储中读取成员数据
writeToLastMemberRead 将数据写入集成数据存储的成员
重置 将数据存储重置为初始状态
hasdata 确定是否有数据可读
进步 确定已经读取了多少数据
numpartitions 数据存储分区数
分区 对数据存储进行分区
创建高数组
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌

例子

全部折叠

通过在改变故障参数的同时模拟机器的Simulink®模型,生成代表在故障条件下运行的机器的模拟集成数据存储。万博1manbetx

加载Simulin万博1manbetxk模型。此模型是中描述的齿轮箱模型的简化版本利用Simu万博1manbetxlink生成故障数据.对于本例,只建模了一种故障模式,即齿轮故障。

mdl =“TransmissionCasingSimplified”;open_system (mdl)

齿轮故障被建模为一个扰动齿轮齿形故障子系统。扰动的大小由模型变量控制ToothFaultGain,在那里牙faultgain = 0对应于无齿轮故障(健康运行)。要生成故障数据的集合,可以使用generateSimulationEnsemble的不同值对模型进行模拟ToothFaultGain,取值范围为-2 ~ 0。的数组万博1manbetx仿真软件。SimulationInput对象为集成中的每个成员配置Simulink模型。万博1manbetx每个模拟在它自己的数据文件中生成一个单独的集成成员。创建这样的数组,并使用setVariable为每次运行分配一个牙齿故障增益值。

牙faultvalues = -2:0.5:0;% 5牙faultgain值simin(ct) = Simulink.SimulationInput(mdl);万博1manbetx= setVariable(simin(ct),“ToothFaultGain”toothFaultValues (ct));结束

对于本例,模型已经配置为记录某些信号值,振动而且转速计(见使用信号记录导出信号数据(万博1manbetx模型))。generateSimulationEnsemble进一步配置模型为:

  • 将日志数据保存到指定文件夹中的文件中。

  • 使用时间表信号日志记录格式。

  • 存储每个万博1manbetx仿真软件。SimulationInput对象中对应的日志数据。

为生成的数据指定一个位置。对于本例,将数据保存到一个名为数据在当前文件夹中。的指标状态是1(真)如果所有的模拟完成无误。

mkdir数据Location = fullfile(pwd,“数据”);[status,E] = generateSimulationEnsemble(simin,location);
[23:25:46]运行模拟…[28-Feb-2020 23:26:12] 5次模拟中完成1次[28-Feb-2020 23:26:23] 5次模拟中完成3次[28-Feb-2020 23:26:33] 5次模拟中完成4次[28-Feb-2020 23:26:41] 5次模拟中完成5次

数据文件夹,检查其中一个文件。每个文件都是一个mat文件,包含以下MATLAB®变量:

  • SimulationInput- - -万博1manbetx仿真软件。SimulationInput对象,该对象用于配置生成文件中数据的模型。您可以使用它来提取有关运行此模拟的条件(例如错误或正常)的信息。

  • logsout——一个数据集对象,其中包含Simulink模型配置为要记录的所有数据。万博1manbetx

  • PMSignalLogName-包含日志数据的变量的名称(“logsout”在本例中)。的simulationEnsembleDatastore命令使用此名称解析文件中的数据。

  • SimulationMetadata-关于生成记录在文件中的数据的模拟的其他信息。

现在您可以使用生成的数据创建模拟集成数据存储。由此产生的simulationEnsembleDatastore对象指向生成的数据。对象列出集合中的数据变量,默认情况下选择所有变量进行读取。检查DataVariables而且SelectedVariables集合的属性来确认这些命名。

集合= simulationEnsembleDatastore(位置)
ensemble = simulationEnsembleDatastore with properties: DataVariables: [4x1 string] IndependentVariables: [0x0 string] ConditionVariables: [0x0 string] SelectedVariables: [4x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]
合奏。数据变量
ans =4 x1字符串"SimulationInput" SimulationMetadata" Tacho" Vibration"
合奏。选择edVariables
ans =4 x1字符串"SimulationInput" SimulationMetadata" Tacho" Vibration"

你现在可以使用系综读取和分析集成数据存储中生成的数据。看到simulationEnsembleDatastore更多信息。

一般来说,你使用命令提取数据simulationEnsembleDatastore对象进入MATLAB®工作区。通常,您的集成包含的变量比您用于特定分析所需的变量要多。使用SelectedVariables的属性simulationEnsembleDatastore对象来选择要读取的变量子集。

对于本例,使用以下代码创建一个simulationEnsembleDatastore对象使用先前通过运行Simulink®模型在不同故障值处生成的数据(参见万博1manbetxgenerateSimulationEnsemble)。集合包括模型参数的五个不同值的模拟数据,ToothFaultGain.由于数据量大,因此解压缩手术需要几分钟。

解压缩simEnsData.zip%提取压缩文件集合= simulationEnsembleDatastore(pwd,“logsout”
ensemble = simulationEnsembleDatastore with properties: DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: [0x0 string] SelectedVariables: [5x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]

生成数据的模型,TransmissionCasingSimplified,被配置为这样的结果集合包含变量,包括加速度计数据,振动,转速表数据,转速计.默认情况下,simulationEnsembleDatastore对象将所有这些变量指定为数据变量和所选变量,如DataVariables而且SelectedVariables属性。

合奏。数据变量
ans =5 x1字符串"PMSignalLogName" "SimulationInput" "SimulationMetadata" "Tacho" "Vibration"
合奏。选择edVariables
ans =5 x1字符串"PMSignalLogName" "SimulationInput" "SimulationMetadata" "Tacho" "Vibration"

假设对于您想做的分析,您只需要振动数据和万博1manbetx仿真软件。SimulationInput对象,该对象描述模拟此成员数据的条件。集合奏。选择edVariables指定要读取的变量。的命令然后从当前集成成员中提取这些变量。

合奏。选择edVariables = [“振动”“SimulationInput”];Data1 = read(集合)
data1 =1×2表振动SimulationInput  ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

数据。振动单元格数组是否包含一个单元格时间表存储仿真次数和相应的振动信号。现在可以根据需要处理这些数据。例如,从表中提取振动数据并绘制它。

振动{1};情节(vibdata1.Time vibdata1.Data)标题(“振动-乐团第一个成员”

下次你打电话的时候在这个组合中,最后一个读的成员指定前进到组合的下一个成员(参见用于状态监测和预测性维护的数据集成).从集合的下一个成员中读取所选变量。

Data2 = read(集合)
data2 =1×2表振动SimulationInput  ___________________ ______________________________ { 20215 x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

为了证实这一点data1而且data2包含来自不同集成成员的数据,检查不同模型参数的值,ToothFaultGain.对于每个集成,此值都存储在变量的字段SimulationInput变量。

data1.SimulationInput {1} .Variables
ans =具有属性的变量:名称:“牙牙断层增益”值:-2工作区:“全局工作区”说明:""
data2.SimulationInput {1} .Variables
ans =具有属性的变量:名称:“牙牙faultgain”值:-1.5000工作空间:“global-workspace”说明:""

这个结果证实了data1是来自乐团的成员ToothFaultGain= -2,和data2是从会员那里来的ToothFaultGain= -1.5

您可以处理集成数据存储中的数据,并向集成成员添加派生变量。对于本例,处理一个变量值来计算一个标签,该标签指示集成成员是否包含存在故障时获得的数据。然后你把这个标签添加到整个组合中。

对于本例,使用以下代码创建一个simulationEnsembleDatastore对象使用先前通过运行Simulink®模型在不同故障值处生成的数据。万博1manbetx(见generateSimulationEnsemble)。集合包括模型参数的五个不同值的模拟数据,ToothFaultGain.该模型被配置为将模拟数据记录到一个名为logsout为本例存储在simEnsData.zip.由于数据量大,因此解压缩手术可能需要一两分钟。

解压缩simEnsData.zip%提取压缩文件集合= simulationEnsembleDatastore(pwd,“logsout”
ensemble = simulationEnsembleDatastore with properties: DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: [0x0 string] SelectedVariables: [5x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]

从集合中的第一个成员读取数据。软件确定哪个集成是第一个成员,并更新属性合奏。LastMemberRead来反映对应文件的名称。

数据=读取(集成)
data =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动  _______________ ______________________________ _________________________________ ___________________ ___________________ {' logsout} {1 x1仿真软件。万博1manbetxSimulink. SimulationIn万博1manbetxput} {1x1SimulationMetadata} {20202x1 timetable} {20202x1 timetable}

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

数据。SimulationInput {1}
ModelName: 'TransmissionCasingSimplified' InitialState: [0x0 Simulink.op. properties]万博1manbetxModelOperatingPoint] ExternalInput: [] ModelParameters: [0x0 万博1manbetxSimulink.Simulation.]ModelParameter] BlockParameters: [0x0 万博1manbetxSimulink.Simulation.]BlockParameter]变量:[1x1 Simulink.万博1manbetxSimulation.]变量]PreSimFcn: [] PostSimFcn: [] UserString: "
Inputvars = data.SimulationInput{1}.Variables;Inputvars。的名字
ans = 'ToothFaultGain'
Inputvars。价值
Ans = -2

假设你想要转换ToothFaultGain将每个集成成员的值转换为是否存在牙齿故障的二进制指示器。再进一步假设,从您使用该系统的经验中知道,小于0.1量级的牙齿故障增益值足以被认为是健康的操作。将这个集合的增益值转换为一个指示器,当-0.1 <增益< 0.1时为0(无故障),否则为1(有故障)。

sT = abs(Inputvars.Value) < 0.1;

要将新的牙齿故障指示器附加到相应的集成数据中,首先展开集成中的数据变量列表,以包含该指示器的变量。

合奏。数据变量= [ensemble.DataVariables;“ToothFault”];合奏。数据变量
ans =6 x1字符串"PMSignalLogName" "SimulationInput" "SimulationMetadata" "Tacho" "Vibration" "ToothFault"

这个操作在概念上等同于向集合数据表中添加一列。现在,DataVariables包含新变量名,将派生值赋给使用的成员的该列writeToLastMemberRead

writeToLastMemberRead(合奏,“ToothFault”、圣);

在实践中,您希望将牙齿故障指示器附加到集合中的每个成员。为此,将集成数据存储重置为未读状态,以便下一个读操作从第一个集成成员开始。然后,循环所有的集合成员,计算ToothFault为每个成员添加。的重置操作不变合奏。数据变量,所以“ToothFault”仍然存在于列表中。

重置(套装);sT = false;Hasdata (ensemble) data = read(ensemble);InputVars = data.SimulationInput{1}.Variables;TFGain = InputVars.Value;sT = abs(TFGain) < 0.1;writeToLastMemberRead(合奏,“ToothFault”、圣);结束

最后,将新的牙齿故障指示器指定为集成数据存储中的条件变量。您可以使用此指定来跟踪和引用集成数据中的变量,这些变量表示生成成员数据的条件。

合奏。条件变量= {“ToothFault”};合奏。ConditionVariables
ans = "牙病"

可以将新变量添加到合奏。选择edVariables当你想读出来做进一步分析的时候。示例展示了操作和分析存储在simulationEnsembleDatastore对象,看到利用Simu万博1manbetxlink生成故障数据

对象的一次调用中从多个集成成员读取数据命令,使用ReadSize集合数据存储的属性。此示例使用simulationEnsembleDatastore,但你可以用同样的技巧fileEnsembleDatastore

使用以下代码创建一个simulationEnsembleDatastore对象使用以前通过运行Simulink模型在各种故障值(参见万博1manbetxgenerateSimulationEnsemble).集合包括模型参数的五个不同值的模拟数据,ToothFaultGain.(由于数据量大,数据量大解压缩手术可能需要一两分钟。)指定要读取的一些数据变量。

解压缩simEnsData.zip%提取压缩文件集合= simulationEnsembleDatastore(pwd,“logsout”);合奏。选择edVariables = [“振动”“SimulationInput”];

默认情况下,调用类的值返回一个单行表振动而且SimulationInput第一个集合成员的变量。改变ReadSize属性一次读取三个成员。

合奏。ReadSize= 3; data1 = read(ensemble)
data1 =3×2表振动SimulationInput  ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。万博1manbetxSimulink. SimulationInput} {20215x1时间表}{1x万博1manbetx1Simulink. SimulationInput} {20204x1时间表}{1x万博1manbetx1SimulationInput}

返回一个三行表,其中每一行包含来自第一、第二和第三个集成成员之一的数据。也会更新LastReadMember属性设置为包含三个对应文件的路径的字符串数组。避免设置ReadSize到一个大到在加载数据时有耗尽内存的风险的值。

如果合奏团包含三个或更多的成员,下一个操作返回来自第4、5和6个成员的数据。因为这个例子的集合总共只包含五个成员,下一个操作只返回两行。

Data2 = read(集合)
data2 =2×2表振动SimulationInput  ___________________ ______________________________ { 20213 x1时间表}{1 x1仿真软件。万博1manbetxSimulink. SimulationInput} {20224x1时间表}{1x万博1manbetx1SimulationInput}

在R2018a中介绍