主要内容

simulationEnsembleDatastore

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

描述

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

该对象指定存储在MATLAB数据文件集合(mat文件)中的数据变量、自变量和条件变量。数据文件包含金宝appSimulink.SimulationData.DatasetSimulink期间记录数据的结果变量金宝app®模型模拟。

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

创建

创建一个simulationEnsembleDatastore对象:

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

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

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

描述

例子

系综= simulationEnsembleDatastore (位置使用先前生成的数据创建模拟集成generateSimulationEnsemble指定的文件夹中位置这个function identifies ensemble variables in the generated data from information stored in the generated MAT-files. The function populates theDataVariablesSelectedVariables特性系综这些集合变量的名称。

例子

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

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

输入参数

全部展开

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

例子:pwd+“\simResults”

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

例子:“logsout”

属性

全部展开

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

simulationEnsembleDatastore的初始值DataVariables生成的数据中所有记录的信号的名称generateSimulationEnsemblesimulationEnsembleDatastore还添加了变量SimulationInputSimulationMetadataDataVariables这个se variables contain information about how the simulation was performed.

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

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

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

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

你也可以指定ConditionVariables使用字符向量的单元格数组,例如{“GearFault”;“温度”},但变量名总是以字符串数组的形式存储,[“齿轮故障”;“温度”].如果指定一个变量名的矩阵,则该矩阵被平展为列向量。

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

合奏。选择edVariables = [“振动”“FaultState”];data =阅读(整体)

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函数专门用于预测性维护工具箱集成数据。其他功能,如重置hasdata,与用于数据存储在MATLAB对象。要将特定的集成成员提取到更小或更专门化的集成数据存储中,请使用子集.若要使用单个命令将所有成员数据转移到表或单元格数组中,请使用readall.要对集成数据存储分区,请使用分区(n, ds指数)的语法分区函数。

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

例子

全部折叠

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

加载Simulin金宝appk模型。这个模型是一个简化版本的齿轮箱模型描述使用Simu金宝applink生成故障数据.对于本例,只建模了一种故障模式,即齿轮-齿故障。

mdl =“TransmissionCasingSimplified”;open_system (mdl)

将齿轮轮齿故障建模为系统中的扰动齿的错子系统。扰动的大小由模型变量控制ToothFaultGain,在那里ToothFaultGain = 0对应无齿轮齿故障(正常运行)。要生成故障数据集合,您可以使用generateSimulationEnsemble来模拟模型在不同的值ToothFaultGain,范围从-2到零。此函数使用金宝app仿真软件。SimulationInput对象来为集成中的每个成员配置Simulink模型。金宝app每个模拟在其自己的数据文件中生成集成的一个独立成员。创建这样一个数组,并使用setVariable为每次运行指定一个齿错增益值。

toothFaultValues = 2:0.5:0;% 5 ToothFaultGain值simin(ct) = Simulink.SimulationInput(mdl);金宝app思敏(ct) = setVariable(思敏(ct),“ToothFaultGain”toothFaultValues (ct));结束

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

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

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

  • 存储每个金宝app仿真软件。SimulationInput对象中的对应日志数据。

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

mkdir数据位置= fullfile (pwd,“数据”);(地位、E) = generateSimulationEnsemble(思敏、位置);
[23-Feb-2021 13:04:06]运行模拟…[23-Feb-2021 13:05:28] 5次仿真运行中完成1次[23-Feb-2021 13:04:49] 5次仿真运行中完成2次[23-Feb-2021 13:05:11] 5次仿真运行中完成3次[23-Feb-2021 13:05:28] 5次仿真运行中完成4次[23-Feb-2021 13:05:57] 5次仿真运行中完成5次

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

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

  • 罗格苏特-A数据集对象,该对象包含Simulink模型配置为记录的所有数据。金宝app

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

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

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

集成=模拟集成数据存储(位置)
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”“振动”
合奏。选择edVariables
ans =4 x1字符串“SimulationInput”“SimulationMetadata”“Tacho”“振动”

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

一般来说,你会使用从a中提取数据simulationEnsembleDatastore对象进入MATLAB®工作空间。通常,集成包含的变量比特定分析所需的变量要多。使用SelectedVariables财产的simulationEnsembleDatastore对象以选择要读取的变量子集。

对于本例,使用下面的代码来创建simulationEnsembleDatastore对象使用以前在不同的故障值运行Simulink®模型生成的数据(参见金宝appgenerateSimulationEnsemble.).该集合包括模型参数的五个不同值的仿真数据,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对象将所有这些变量指定为数据变量和选定变量,如DataVariablesSelectedVariables属性。

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

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

合奏。选择edVariables = [“振动”“SimulationInput”]; 数据1=读取(集成)
数据1=1×2表振动SimulationInput  ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。金宝appSimulationInput}

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

vibdata1 = data1.Vibration {1};情节(vibdata1.Time vibdata1.Data)标题(“振动-首个合奏成员”

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

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

数据2=读取(集成)
数据2=1×2表振动SimulationInput  ___________________ ______________________________ { 20215 x1时间表}{1 x1仿真软件。金宝appSimulationInput}

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

data1.SimulationInput {1} .Variables
ans =带有属性的变量:名称:'ToothFaultGain'值:-2 Workspace: 'global-workspace' Description: ""
data2.SimulationInput {1} .Variables
ans=具有以下属性的变量:名称:“ToothFaultGain”值:-1.5000工作区:“全局工作区”说明:“

这一结果证实了data1是合奏组的成员吗ToothFaultGain= 2,data2是来自会员的吗ToothFaultGain= -1.5

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

对于本例,使用下面的代码来创建simulationEnsembleDatastore对象使用以前在各种故障值下运行Simulink®模型生成的数据。金宝app(见generateSimulationEnsemble.)该集合包括模型参数的五个不同值的仿真数据,ToothFaultGain这个model was configured to log the simulation data to a variable named罗格苏特为本示例存储的mat文件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 =阅读(整体)
data =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动  _______________ ______________________________ _________________________________ ___________________ ___________________ {' logsout} {1 x1仿真软件。金宝appSimulationInput} {1 x1金宝app仿真软件。SimulationMetadata} {20202x1 timetable} {20202x1 timetable}

默认情况下,存储在集成数据中的所有变量都指定为SelectedVariables这个refore, the returned table row includes all ensemble variables, including a variableSimulationInput,其中包含金宝app仿真软件。SimulationInput对象,该对象为该集成成员配置了模拟。该对象包括ToothFaultGain用于集成成员的值,存储在其中的数据结构中变量财产。检查这个值。(有关如何存储模拟配置的更多信息,请参见金宝app仿真软件。SimulationInput(金宝app模型).)

数据。SimulationInput {1}
ans = SimulationInput,带有属性:ModelName: 'TransmissionCasingSimplified'金宝app[] ModelParameters: [0x0 Simulink.Simulation.]金宝app[0x0 Simulink.Simulation.]金宝app变量:[1x1 Simulink.Simulation.]金宝app变量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=假;Hasdata (ensemble) data = read(ensemble);InputVars = data.SimulationInput {1} .Variables;TFGain = InputVars.Value;sT = abs(TFGain) < 0.1;writeToLastMemberRead(合奏,“ToothFault”、圣);结束

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

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

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

的调用中从多个集成成员读取数据命令,可以使用ReadSize集合数据存储的属性。这个示例使用simulationEnsembleDatastore,但你可以使用相同的技术fileEnsembleDatastore

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

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

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

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

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

如果集合包含三个或更多的额外成员,则下一个操作返回第4、5和6个成员的数据。因为这个示例的集合总共只包含5个成员,所以下一个操作只返回两行。

数据2=读取(集成)
数据2=2×2表振动SimulationInput  ___________________ ______________________________ { 20213 x1时间表}{1 x1仿真软件。金宝app仿真输入}{20224x1时间表}{1x1金宝appSimulationInput}
介绍了R2018a