主要内容

simulationEnsembleDatastore

管理由生成的集成数据generateSimulationEnsemble或者通过将模拟数据记录到金宝app

描述

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

该对象指定存储在MATLAB数据文件集合(mat文件)中的数据变量、自变量和条件变量。数据文件包含金宝appsimulink.simulationdata.dataset.这些变量是在Simulink中记录数据的结果金宝app®模型模拟。

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

创建

创建simulationEnsembleDatastore对象:

  1. 从Simulink模型生成和记录仿真数据。金宝app你可以使用generateSimulationEnsemble或任何其他记录磁盘仿真的方法。

  2. 创建一个simulationEnsembleDatastore对象指向生成的模拟数据simulationEnsembleDatastore命令(如下所述)。

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

描述

例子

表演团体=模拟安装数据存储(位置从先前使用的数据创建模拟集合generateSimulationEnsemble指定的文件夹中位置.该函数从生成的mat文件中存储的信息标识生成数据中的集成变量。函数填充DataVariablesSelectedVariables的属性表演团体使用这些集合变量的名称。

例子

表演团体=模拟安装数据存储(位置signallog用途signallog要确定Mat文件中的哪个变量包含记录的信号。使用指定的变量名称信号记录生成数据的Simulink模型的配置参数。指定此变量允许集成将金宝app这些信号视为集成数据变量,而不是signallog变量本身。MAT文件中的其他变量也作为集合数据变量返回。

表演团体=模拟安装数据存储(位置signallog名称,价值指定附加的性质使用一个或多个名称-值对参数的对象。例如,使用“IndependentVariables”,“年龄”;“ID”)在创建对象时指定独立变量。

输入参数

全部展开

将仿真数据存储为字符串或字符向量的位置的文件路径。文件路径可以是Matlab支持的任何位置金宝app®数据存储,包括指向远程位置的IRI路径。然而,当你使用simulationEnsembleDatastore若要管理远程数据,则不能使用writeToLastMemberRead将数据添加到集成数据存储中。有关在MATLAB中使用远程数据的更多信息,请参见使用远程数据

例子:pwd + " \ simResults "

记录信号的变量名,指定为字符串或字符向量。这个输入参数告诉simulationEnsembleDatastore存储的mat -文件中的数据变量包含记录的模拟数据。变量名在信号记录生成数据的Simulink模型的配置参数。金宝app当你使用generateSimulationEnsemble要为集成生成仿真数据,每个生成的MAT-file包含一个变量,PMSignalLogName,指定记录信号的变量名。

例子:“logsout”

属性

全部展开

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

simulationEnsembleDatastore设置初始值DataVariables使用生成的数据中所有记录信号的名称generateSimulationEnsemblesimulationEnsembleDatastore还添加了变量SimulationInput仿真metadata.DataVariables.这些变量包含有关如何执行模拟的信息。

您也可以指定DataVariables使用字符向量的单元格数组,例如{“振动”;“转速计”},但变量名始终存储为字符串数组,(“振动”;“转速器”).如果指定变量名称的矩阵,则矩阵将趋于扁平到列向量。

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

您也可以指定IndependentVariables使用字符向量的单元格数组,例如{'time';'年龄'},但变量名始终存储为字符串数组,["时间";“时代”).如果指定变量名称的矩阵,则矩阵将趋于扁平到列向量。

集合中的条件变量,指定为字符串数组。根据集合成员所处的故障条件或其他运行条件,使用条件变量来标记集合中的成员。在实践中,数据变量、自变量和条件变量都是不同的变量集合。

您也可以指定ConditionVariables使用字符向量的单元格数组,例如{“GearFault”;“温度”},但变量名始终存储为字符串数组,[" GearFault”;“温度”).如果指定变量名称的矩阵,则矩阵将趋于扁平到列向量。

要从集合中读取的变量,指定为字符串数组。使用此属性指定在使用时将哪些变量提取到MATLAB工作空间阅读命令从集合中读取数据。阅读中指定的每个名称返回包含表变量的表行SelectedVariables.例如,假设你有一个整体,表演团体,它包含六个变量,你只需要读取其中的两个,振动FaultState.设置SelectedVariables财产和呼叫阅读

合奏.SelectedVariables = [“振动”“断层状态”];数据=读取(集合)

SelectedVariables可以是变量的任意组合DataVariablesConditionVariables,及IndependentVariables财产。如果SelectedVariables是空的,,阅读生成一个错误。

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

您可以指定SelectedVariables使用字符向量的单元格数组,例如{“振动”;“转速计”},但变量名始终存储为字符串数组,(“振动”;“转速器”).如果指定变量名称的矩阵,则矩阵将趋于扁平到列向量。

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

集合数据存储属性LastMemberRead包含最近一次读取期间读取的所有文件的名称阅读操作。例如,ifReadSize=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函数专门用于预测性维护工具箱集成数据。其他功能,如重置哈迪塔,与使用的人相同数据存储对象。要将特定的集成成员提取到更小或更专门的集成数据存储中,请使用子集. 要使用单个命令将所有成员数据传输到表或单元格数组中,请使用readall.要对集成数据存储分区,请使用分区(DS,N,索引)语法的隔断功能。

阅读 从集合数据存储中读取成员数据
writeToLastMemberRead 将数据写入集合数据存储的成员
子集 从现有合并数据存储的子集中创建新的合奏数据存储
重置 将数据存储重置为初始状态
哈迪塔 确定是否可以读取数据
进步 确定已经读取了多少数据
readall 读取数据存储中的所有数据
numpartitions 数据存储分区数
隔断 对数据存储进行分区
创建高数组
可分割 确定数据存储是否可分区
isShufflable. 确定数据存储是否可洗牌

例子

全部收缩

通过在改变故障参数的同时模拟机器的Simulink®模型,生成一个模拟集成数据存储,该数据存储表示在故障条件下运行的机器。金宝app

加载Simulin金宝appk模型。该模型是描述的齿轮箱模型的简化版本使用Simu金宝applink生成故障数据.对于此示例,仅建模一个故障模式,齿轮齿故障。

mdl =“TransmissionCasingSimplified”;Open_System(MDL)

齿轮齿面故障被建模为一种扰动齿的错子系统。扰动的大小由模型变量控制牙齿屁股,在那里ToothFaultGain = 0对应于无齿轮齿故障(正常运行)。要生成故障数据的集合,请使用generateSimulationEnsemble以不同的值模拟模型牙齿屁股,范围从-2到0。这个函数使用数组金宝appsimulink.simulationInpul.对象来为集成中的每个成员配置Simulink模型。金宝app每个模拟在其自己的数据文件中生成集成的一个独立成员。创建这样一个数组,并使用可遗漏的为每个运行分配牙齿故障增益值。

齿形故障值=-2:0.5:0;%5 Toothfultgain值为了simin(ct) = Simulink.SimulationInput(mdl);金宝app思敏(ct) = setVariable(思敏(ct),“ToothFaultGain”,牙错值(ct);结尾

对于本例,模型已配置为记录某些信号值,振动测速仪(见使用信号日志记录导出信号数据(金宝app模型)).generateSimulationEnsemble进一步配置模型为:

  • 将记录的数据保存到指定文件夹中的文件中。

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

  • 存储每个金宝appsimulink.simulationInpul.具有相应的记录数据的已保存文件中的对象。

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

mkdir数据位置= fullfile (pwd,“数据”);[状态,e] =生成估计型(Simin,Location);
[23-Feb-2021 13:04:06]运行模拟[2021年2月23日13:04:30]完成5次模拟运行中的1次[2021年2月23日13:04:49]完成5次模拟运行中的2次[2021年2月23日13:05:11]完成5次模拟运行中的3次[2021年2月23日13:05:28]完成5次模拟运行中的4次[2021年2月23日13:05:57]完成5次模拟运行中的5次

在 - 的里面数据文件夹,检查其中一个文件。每个文件都是包含以下MATLAB®变量的MAT文件:

  • SimulationInput-金宝appsimulink.simulationInpul.对象,该对象用于配置模型以生成文件中的数据。您可以使用它来提取有关运行此模拟的条件(如故障或正常)的信息。

  • logsout——一个数据集对象,该对象包含Simulink模型配置为记录的所有数据。金宝app

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

  • 仿真metadata.—生成记录在文件中的数据的仿真的其他信息。

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

合奏= simulationEnsembleDatastore(位置)
senemble = simulationeSembledataStore,具有属性:Datavariables:[4x1字符串]独立variables:[0x0字符串]条件variables:[0x0字符串]选择variables:[4x1字符串] readsize:1 nummembers:5 lastmemberread:[0x0字符串]文件:[5x1字符串]
合奏。数据变量
ans =.4x1字符串“SimulationInput”“SimulationMetadata”“Tacho”“振动”
合奏。选择edVariables
ans =.4x1字符串“SimulationInput”“SimulationMetadata”“Tacho”“振动”

您现在可以使用表演团体读取和分析集成数据存储中生成的数据。看见simulationEnsembleDatastore为更多的信息。

通常,您使用阅读从a中提取数据simulationEnsembleDatastore对象进入MATLAB®工作区。通常,您的合奏包含比需要用于特定分析的变量更多的变量。使用SelectedVariables财产的财产simulationEnsembleDatastore对象来选择要读取的变量子集。

对于本例,使用以下代码创建simulationEnsembleDatastore对象,该对象使用以前通过在各种故障值下运行Simulink®模型生成的数据(请参见金宝appgenerateSimulationEnsemble。)。该集合包括用于型号参数的五个不同值的模拟数据,牙齿屁股. 由于数据量大,因此解压缩手术需要几分钟。

解压缩simensdata.zip.zip.%提取压缩文件Ensemble = SimulationEneMbleyAtastore(PWD,“logsout”
senemble = simulateSembledataStore具有属性:datavariables:[5x1字符串]独立variables:[0x0字符串]条件variables:[0x0字符串]选择variables:[5x1字符串] readsize:1 nummembers:5 lastmemberread:[0x0字符串]文件:[5x1字符串]

生成数据的模型,传输贴物尺寸,被配置为使得得到的集合包含包含加速度计数据的变量,振动和转速表数据,测速仪. 默认情况下simulationEnsembleDatastore对象将所有这些变量指定为数据变量和所选变量,如图所示DataVariablesSelectedVariables财产。

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

假设对于您想要进行的分析,您只需要振动数据和金宝appsimulink.simulationInpul.对象,该对象描述模拟此成员数据所依据的条件。集合奏。选择edVariables来指定要读取的变量。的阅读命令然后从当前集成成员中提取这些变量。

合奏.SelectedVariables = [“振动”“模拟输入”];data1 =阅读(整体)
data1 =1×2表振动SimulationInput  ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。金宝appSimulationInput}

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

vibdata1 = data1. vibration {1};plot(vibdata1.time,vibdata1.data)标题(“振动-首个合奏成员”

图中包含一个坐标轴。标题为“振动-第一集合成员”的轴包含一个类型为线的对象。

下次你再打电话来阅读在这个集合中,最后读取的成员命名将推进到集合中的下一个成员(参见条件监控和预测维护的数据集合).从集合的下一个成员读取选定的变量。

data2 =阅读(整体)
data2 =1×2表振动SimulationInput  ___________________ ______________________________ { 20215 x1时间表}{1 x1仿真软件。金宝appSimulationInput}

确认data1data2包含来自不同集合成员的数据,检查不同模型参数的值,牙齿屁股.对于每个集成,此值存储在变量场面的领域SimulationInput变量

data1.SimulationInput {1} .Variables
ANS =具有属性的变量:名称:'toothfultgain'值:-2工作空间:'global-workspace'描述:“”
data2.SimulationInput {1} .Variables
ans =带有属性的变量:名称:“ToothFaultGain”值:-1.5000工作区:“global-workspace”描述:“”

这个结果证实了data1是合奏组的成员吗牙齿屁股= 2,data2是来自会员的吗牙齿屁股= -1.5

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

对于本例,使用以下代码创建simulationEnsembleDatastore使用先前通过在各种故障值运行Simulink®模型生成的数据的对象。金宝app(看generateSimulationEnsemble。)集合包括用于型号参数的五个不同值的模拟数据,牙齿屁股. 将模型配置为将模拟数据记录到名为logsout为本示例存储的mat文件simensdata.zip.zip.. 由于数据量大,因此解压缩手术可能需要一到两分钟。

解压缩simensdata.zip.zip.%提取压缩文件Ensemble = SimulationEneMbleyAtastore(PWD,“logsout”
senemble = simulateSembledataStore具有属性:datavariables:[5x1字符串]独立variables:[0x0字符串]条件variables:[0x0字符串]选择variables:[5x1字符串] readsize:1 nummembers:5 lastmemberread:[0x0字符串]文件:[5x1字符串]

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

数据=读取(集合)
data =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动  _______________ ______________________________ _________________________________ ___________________ ___________________ {' logsout} {1 x1仿真软件。金宝appSimulationInput} {1 x1金宝app仿真软件。仿真metadata.} {20202x1 timetable} {20202x1 timetable}

默认情况下,存储在集合数据中的所有变量都被指定为SelectedVariables.因此,返回的表行包含所有集成变量,包括一个变量SimulationInput,其中包含金宝appsimulink.simulationInpul.为该集合成员配置模拟的对象。该对象包括牙齿屁股用于集成成员的值,存储在其变量财产。检查该价值。(有关如何存储仿真配置的详细信息,请参阅金宝appsimulink.simulationInpul.(金宝app模型).)

数据。SimulationInput {1}
ans=带属性的SimulationInput:ModelName:“TransmissionCasingSimplified”初始状态:[0x0 Simulink.op.ModelOperating金宝appPoint]外部输入:[]模型参数:[0x0 Simulink.Simulation.ModelParameter]块参数:[0x0 Simulink.Simulation.BlockParameter]变量:[1x1 Simulink.Simulation.Variable]PreSimFcn:[]后SIMFCN:[]用户字符串:“”
Inputvars = data.SimulationInput {1} .Variables;Inputvars。的名字
ans='TOOTH FAULT GAIN'
InputVars.Value.
ans = 2

假设您要转换牙齿屁股将每个集合成员的值转换为是否存在牙齿故障的二元指示器。进一步假设您从使用系统的经验中知道,齿故障增益值小于0.1的量级足够小,可以认为是正常运行。将此集成的增益值转换为一个指示器,当-0.1 <增益< 0.1时为0(无故障),否则为1(故障)。

sT=绝对值(输入变量值)<0.1;

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

ensemble.DataVariables=[ensemble.DataVariables;“ToothFault”];合奏。数据变量
ans =.6 x1字符串“pmsignallogname”“SimulationInput”“Simulation MetaData”“Tacho”“振动”“牙齿”

这个操作在概念上相当于向集成数据表中添加一列。现在,DataVariables包含新的变量名称,将派生值分配给成员的该列writeToLastMemberRead

writeToLastMemberRead(合奏,“牙错”,英石);

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

重置(套装);圣= false;尽管Hasdata (ensemble) data = read(ensemble);InputVars = data.SimulationInput {1} .Variables;TFGain = InputVars.Value;sT = abs(TFGain) < 0.1;writeToLastMemberRead(合奏,“牙错”,英石);结尾

最后,将新牙齿故障指示器指定为集合数据存储中的条件变量。您可以使用此名称来跟踪并在集合数据中引用变量,该数据表示在生成成员数据的情况下表示的条件。

合奏。ConditionVariables = {“ToothFault”};合奏。ConditionVariables
ans = " ToothFault "

您可以将新变量添加到合奏。选择edVariables当你想读出来作进一步分析时。例如,演示了更多操作和分析存储在数据库中的数据的方法simulationEnsembleDatastore对象,看到使用Simu金宝applink生成故障数据

在一次调用中从多个集合成员读取数据阅读命令,可以使用ReadSize合奏数据存储的属性。这个例子用途simulationEnsembleDatastore,但你可以使用相同的技术文件集成数据存储

使用下面的代码创建simulationEnsembleDatastore对象使用以前在各种错误值下运行Simulink模型生成的数据(参见金宝appgenerateSimulationEnsemble).该集合包括用于型号参数的五个不同值的模拟数据,牙齿屁股.由于数据量大,解压缩手术可能需要一到两分钟。)指定一些要读取的数据变量。

解压缩simensdata.zip.zip.%提取压缩文件Ensemble = SimulationEneMbleyAtastore(PWD,“logsout”);合奏.SelectedVariables = [“振动”“模拟输入”];

默认情况下,调用阅读在此集成数据存储上返回一个单行表,其中包含振动SimulationInput第一集合成员的变量。改变ReadSize属性一次读取三个成员。

合奏。ReadSize= 3; data1 = read(ensemble)
data1 =3×2表振动SimulationInput  ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。金宝app仿真输入}{20215x1时间表}{1x1金宝app仿真输入}{20204x1时间表}{1x1金宝appSimulationInput}

阅读返回一个三行表,其中每行包含来自第一个、第二个和第三个集成成员之一的数据。阅读还更新了Lastreadmember.集合数据存储的属性在包含三个相应文件的路径的字符串数组中。避免设置ReadSize值太大,以至于在加载数据时有耗尽内存的风险。

如果合奏包含三个或更多额外的成员,则下一个阅读操作返回来自第四,第五和第六个成员的数据。因为这个例子的集合只包含五个成员总数,下一个成员阅读操作只返回两行。

data2 =阅读(整体)
data2 =2×2表振动SimulationInput  ___________________ ______________________________ { 20213 x1时间表}{1 x1仿真软件。金宝app仿真输入}{20224x1时间表}{1x1金宝appSimulationInput}
介绍了R2018a