主要内容

simulationEnsembleDatastore

管理整体数据生成的generateSimulationEnsemble或者通过日志仿真数据万博1manbetx

描述

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

该对象指定的数据变量,自变量,条件变量存储在MATLAB的集合®数据文件(mat文件)。数据文件包含万博1manbetxSimulink.SimulationData.Dataset变量的结果在仿真软件中记录数据万博1manbetx®模型模拟。

对于一个详细示例说明模拟整体数据存储的使用,看看生成和使用模拟数据。通用数据信息集合体的预见性维护工具箱™,明白了数据集合体状态监测和预测维护

创建

创建一个simulationEnsembleDatastore对象:

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

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

如果你有以前生成的模拟数据generateSimulationEnsemble或其他方法,您可以使用创建函数simulationEnsembleDatastore创建一个新的模拟整体数据存储对象。

描述

例子

系综= simulationEnsembleDatastore (位置)创建一个模拟合奏从数据生成之前使用generateSimulationEnsemble在指定的文件夹中位置。函数标识整体变量在生成的数据信息存储在mat文件生成的。函数填充DataVariablesSelectedVariables的属性系综这些集合变量的名字。

例子

系综= simulationEnsembleDatastore (位置,signallog)使用signallogmat文件,以确定哪些变量包含记录信号。使用中指定的变量名信号记录配置参数的仿真软件模型生成的数据。万博1manbetx指定该变量允许乐团的合奏来治疗这些信号数据变量,而不是signallog变量本身。MAT-file中的其他变量也作为整体数据变量返回。

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

输入参数

全部展开

文件路径的位置存储仿真数据,指定为一个字符串或一个字符向量。文件路径可以是任何位置由MATLAB数据存储支持,包括一个IRI路径万博1manbetx指向远程位置。然而,当你使用simulationEnsembleDatastore管理远程数据,不能使用writeToLastMemberRead将数据添加到集合数据存储。关于工作的更多信息在MATLAB与远程数据,看看使用远程数据

例子:pwd + " \ simResults "

变量名的记录信号,指定为一个字符串或一个字符向量。这个输入参数告诉simulationEnsembleDatastore数据变量存储mat文件包含记录的仿真数据。这个变量名称中指定信号记录配置参数的仿真软件模型生成的数据。万博1manbetx当你使用generateSimulationEnsemble生成仿真数据的整体,每个生成MAT-file包含一个变量,PMSignalLogName,指定的变量名称记录信号。

例子:“logsout”

属性

全部展开

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

simulationEnsembleDatastore设置的初始值DataVariables的名字记录信号的数据生成generateSimulationEnsemblesimulationEnsembleDatastore还增加了变量SimulationInputSimulationMetadataDataVariables。这些变量包含信息仿真是如何执行的。

您还可以指定DataVariables使用单元阵列的特征向量,如{“振动”;“转速计”},但变量名总是存储为字符串数组,(“振动”;“转速器”)。如果你指定变量名的一个矩阵,矩阵是一个列向量夷为平地。

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

您还可以指定IndependentVariables使用单元阵列的特征向量,如{“时间”,“年龄”},但变量名总是存储为字符串数组,(“时间”,“年龄”)。如果你指定变量名的一个矩阵,矩阵是一个列向量夷为平地。

条件变量的合奏,指定为字符串数组。使用条件变量标签在乐团成员根据故障状态或其他操作条件下,乐团成员收集。在实践中,您的数据变量,自变量,条件变量都是不同类型的变量。

您还可以指定ConditionVariables使用单元阵列的特征向量,如{“GearFault”;“温度”},但变量名总是存储为字符串数组,(“GearFault”;“温度”)。如果你指定变量名的一个矩阵,矩阵是一个列向量夷为平地。

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

ensemble.SelectedVariables= [“振动”;“FaultState”];data =阅读(整体)

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

simulationEnsembleDatastore设置的初始值SelectedVariables的名字记录信号生成的数据generateSimulationEnsemble

您可以指定SelectedVariables使用单元阵列的特征向量,如{“振动”;“转速计”},但变量名总是存储为字符串数组,(“振动”;“转速器”)。如果你指定变量名的一个矩阵,矩阵是一个列向量夷为平地。

数量的成员从整体数据存储,读取指定为一个正整数,小于在乐团成员的总数。默认情况下,命令返回一行表包含数据从一个乐团成员。读取数据从多个成员在一个操作时,将此属性设置为一个整数值大于1。例如,如果ReadSize= 3,然后返回一个三横列表每行包含数据从不同的乐团成员。如果少于ReadSize成员都是未读的返回一个表和尽可能多的行有剩下的成员。

整体数据存储属性LastMemberRead包含所有文件的名称在最近的阅读操作。因此,例如,如果ReadSize= 3,然后一个操作集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 确定是否shuffleable数据存储

例子

全部折叠

生成一个模拟整体数据存储的数据代表一个机器操作在故障条件下通过模拟仿真软件®机器而不同故障参数的模型。万博1manbetx

加载仿真软件模型。万博1manbetx这个模型是一个简化版的变速箱模型中描述利用仿真软件万博1manbetx生成故障数据。在这个例子中,只有一个故障模式建模,齿的错。

mdl =“TransmissionCasingSimplified”;open_system (mdl)

齿断层建模的干扰齿的错子系统。干扰的大小由模型控制变量ToothFaultGain,在那里ToothFaultGain = 0对应于没有齿故障(健康的操作)。生成的故障数据,您使用generateSimulationEnsemble模拟模型在不同的值ToothFaultGain,从2到零。这个函数使用的数组万博1manbetxSimulink.SimulationInput对象配置仿真软件模型中每一个成员。万博1manbetx每个模拟生成一个单独的乐团的成员在其自己的数据文件。创建这样一个数组,和使用setVariable每次运行分配tooth-fault增益值。

toothFaultValues = 2:0.5:0;% 5 ToothFaultGain值ct =元素个数(toothFaultValues): 1:1思敏(ct) = Simuli万博1manbetxnk.SimulationInput (mdl);思敏(ct) = setVariable(思敏(ct),“ToothFaultGain”toothFaultValues (ct));结束

对于这个示例,该模型已经配置日志某些信号值,振动转速计(见节省使用信号测井信号数据(万博1manbetx模型))。generateSimulationEnsemble进一步配置模型:

  • 保存记录数据在您指定的文件夹在文件。

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

  • 存储每个万博1manbetxSimulink.SimulationInput对象与相应的记录数据保存的文件。

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

mkdir数据位置= fullfile (pwd,“数据”);(地位、E) = generateSimulationEnsemble(思敏、位置);
(03 - mar - 2023 08:26:03)运行模拟……(03 - mar - 2023 08:26:06)完成1 5模拟运行(03 - mar - 2023 08:26:08)完成2 5模拟运行(03 - mar - 2023 08:26:09)完成3 5模拟运行(03 - mar - 2023 08:26:11)完成4 5模拟运行(03 - mar - 2023 08:26:13)完成5 5模拟运行

数据文件夹,检查一个文件。每个文件包含下面的MATLAB®MAT-file变量:

  • SimulationInput- - -万博1manbetxSimulink.SimulationInput对象用于配置模型生成的数据文件。您可以使用此提取条件的信息(如缺陷或健康)在模拟运行。

  • logsout——一个数据集对象包含所有仿真软件的数据模型配置为日志。万博1manbetx

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

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

现在你可以使用生成的数据创建仿真整体数据存储。由此产生的simulationEnsembleDatastore对象指向生成的数据。整体对象列表数据变量,默认情况下所有的变量选择阅读。检查DataVariablesSelectedVariables整体确认这些名称的属性。

合奏= simulationEnsembleDatastore(位置)
合奏= simulationEnsembleDatastore属性:DataVariables: [4 x1字符串]IndependentVariables: [0 x0字符串]ConditionVariables: [0 x0字符串]SelectedVariables: [4 x1字符串]ReadSize: 1 NumMembers: 5 LastMemberRead: [0 x0字符串)文件:[5 x1字符串)
ensemble.DataVariables
ans =4 x1字符串“SimulationMetadata”“SimulationInput转速器”“振动”
ensemble.SelectedVariables
ans =4 x1字符串“SimulationMetadata”“SimulationInput转速器”“振动”

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

一般来说,您使用命令来提取数据simulationEnsembleDatastore对象的MATLAB®工作区。往往你的合奏包含更多比你需要使用特定的变量分析。使用SelectedVariables财产的simulationEnsembleDatastore对象选择变量对阅读的一个子集。

对于这个示例,使用下面的代码来创建一个simulationEnsembleDatastore对象使用数据之前通过运行仿真软件生成®(参见模型在各种故障值万博1manbetxgenerateSimulationEnsemble)。套装包括五个不同的仿真数据模型的参数值,ToothFaultGain。由于数据的数量,解压缩操作需要几分钟时间。

解压缩simEnsData.zip%提取压缩文件合奏= simulationEnsembleDatastore (pwd,“logsout”)
合奏= simulationEnsembleDatastore属性:DataVariables: x1字符串[5]IndependentVariables: [0 x0字符串]ConditionVariables: [0 x0字符串]SelectedVariables: x1字符串[5]ReadSize: 1 NumMembers: 5 LastMemberRead: [0 x0字符串)文件:[5 x1字符串)

生成的模型数据,TransmissionCasingSimplified,配置,这样生成的合奏包含变量包括加速度计数据,振动转速表的数据,转速计。默认情况下,simulationEnsembleDatastore对象指定所有这些变量数据变量和选择变量,如图所示DataVariablesSelectedVariables属性。

ensemble.DataVariables
ans =5 x1字符串“SimulationInput”“PMSignalLogName SimulationMetadata”“转速器”“振动”
ensemble.SelectedVariables
ans =5 x1字符串“SimulationInput”“PMSignalLogName SimulationMetadata”“转速器”“振动”

假设分析你想做的事,你只需要振动数据和万博1manbetxSimulink.SimulationInput对象,描述了这种成员数据模拟的条件。集ensemble.SelectedVariables你想读指定变量。的命令然后提取这些变量从当前乐团成员。

ensemble.SelectedVariables= [“振动”;“SimulationInput”];data1 =阅读(整体)
data1 =1×2表振动SimulationInput ___________________ ______________________________ {20202 x1时间表}{1 x1 Simulink.Simul万博1manbetxationInput}

data.Vibration是一个细胞包含一个数组时间表存储仿真时间和相应的振动信号。现在,您可以根据需要处理这些数据。例如,从表中提取振动数据和情节。

vibdata1 = data1.Vibration {1};情节(vibdata1.Time vibdata1.Data)标题(“振动——第一次全体成员)

图包含一个坐标轴对象。与标题振动轴对象——第一次全体成员包含一个类型的对象。

下次你打电话合奏,上一次读书成员指定进展到下一个乐团的成员(见数据集合体状态监测和预测维护)。阅读所选变量从下一个乐团的成员。

data2 =阅读(整体)
data2 =1×2表振动SimulationInput ___________________ ______________________________ {20215 x1时间表}{1 x1 Simulink.Simul万博1manbetxationInput}

确认data1data2包含来自不同的乐团成员的数据,研究不同模型参数的值,ToothFaultGain。对于每一个集合,这个值存储在变量场的SimulationInput变量。

data1.SimulationInput {1} .Variables
ans =变量属性:名称:“ToothFaultGain”值:2工作区:全局工作空间的背景:“描述:”“
data2.SimulationInput {1} .Variables
ans =变量属性:名称:“ToothFaultGain”值:-1.5000工作区:全局工作空间的背景:“描述:”“

这个结果证实data1从乐团成员吗ToothFaultGain= 2,data2从成员吗ToothFaultGain= -1.5

你可以在一个数据存储过程数据和派生变量添加到乐团成员。对于这个示例,过程变量值来计算标签表明乐团成员是否包含数据获取与错误。然后添加标签。

对于这个示例,使用下面的代码来创建一个simulationEnsembleDatastore对象使用数据之前通过运行仿真软件生成®模型在各种故障值。万博1manbetx(见generateSimulationEnsemble)。套装包括五个不同的仿真数据模型的参数值,ToothFaultGain。模型配置日志仿真数据变量命名logsoutmat文件中存储的这个例子simEnsData.zip。由于数据的数量,解压缩操作可能需要一两分钟。

解压缩simEnsData.zip%提取压缩文件合奏= simulationEnsembleDatastore (pwd,“logsout”)
合奏= simulationEnsembleDatastore属性:DataVariables: x1字符串[5]IndependentVariables: [0 x0字符串]ConditionVariables: [0 x0字符串]SelectedVariables: x1字符串[5]ReadSize: 1 NumMembers: 5 LastMemberRead: [0 x0字符串)文件:[5 x1字符串)

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

data =阅读(整体)
data =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动售予______________________________ _________________________________ ___________________ ___________________ {‘logsout} {1 x1仿真软件。万博1manbetxSimulationInput} {1 x1万博1manbetx仿真软件。SimulationMetadata} {20202x1 timetable} {20202x1 timetable}

默认情况下,所有的变量存储在整体数据指定为SelectedVariables。因此,返回的表行包括所有合奏变量,包括一个变量SimulationInput,其中包含的万博1manbetxSimulink.SimulationInput这个乐团成员对象配置仿真。该对象包含了ToothFaultGain值用于合奏团成员,存储在一个数据结构变量财产。检查这个值。(更多信息关于仿真配置存储,明白了万博1manbetxSimulink.SimulationInput(万博1manbetx模型))。

data.SimulationInput {1}
ans = SimulationInput属性:ModelName:“TransmissionCasingSimplified”InitialState: [0 x0 Simulink.op。万博1manbetxModelOperatingPoint] ExternalInput: [] ModelParameters: [0 x0万博1manbetx Simulink.Simulation。ModelParameter] BlockParameters: [0 x0万博1manbetx Simulink.Simulation。BlockParameter]变量:[1 x1 Simulink万博1manbetx.Simulation。变量)PreSimFcn: [] PostSimFcn: [] UserString:“
Inputvars = data.SimulationInput {1} .Variables;Inputvars.Name
ans = ' ToothFaultGain '
Inputvars.Value
ans = 2

假设您想要转换ToothFaultGain每个乐团成员为一个二进制值指标的牙齿是否存在过错。进一步假设您知道从你的经验与系统tooth-fault增益值小于0.1级小到可以被认为是健康的操作。这个乐团的增益值转换成一个指标,是0(无过错)-0.1 <获得< 0.1,1(断层)。

圣= abs (Inputvars.Value) < 0.1;

添加新的tooth-fault指标对应的整体数据,首先扩展的列表数据变量的套装包括一个变量指标。

ensemble.DataVariables= [ensemble.DataVariables;“ToothFault”];ensemble.DataVariables
ans =6 x1字符串“SimulationInput”“PMSignalLogName SimulationMetadata”“转速器”“振动”“ToothFault”

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

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

在实践中,您想要添加tooth-fault指标总体中每一个成员。,重置合奏数据存储到未读状态,以便下一个读操作开始在第一个乐团成员。然后,遍历所有乐团成员,计算ToothFault对于每一个成员和附加。的重置操作不会改变ensemble.DataVariables,所以“ToothFault”仍然存在在那个列表中。

重置(套装);圣= false;hasdata(整体)数据=阅读(套装);InputVars = data.SimulationInput {1} .Variables;TFGain = InputVars.Value;圣= abs (TFGain) < 0.1;writeToLastMemberRead(合奏,“ToothFault”、圣);结束

最后,指定新tooth-fault指标在整体数据存储作为一个条件变量。您可以使用此名称来跟踪和引用变量在总体数据代表的条件生成的数据成员。

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

您可以添加新的变量ensemble.SelectedVariables当你想读出来进行进一步分析。例如显示更多的方法来处理和分析数据存储在一个simulationEnsembleDatastore对象,看到利用仿真软件万博1manbetx生成故障数据

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

使用下面的代码来创建一个simulationEnsembleDatastore对象使用数据之前通过运行仿真软件模型生成各种故障值(见万博1manbetxgenerateSimulationEnsemble)。套装包括五个不同的仿真数据模型的参数值,ToothFaultGain。(因为数据量解压缩操作可能需要一两分钟。)指定要读取一些数据的变量。

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

默认情况下,调用在这个整体数据存储返回一个单列表,其中包含的值振动SimulationInput变量第一乐团成员。改变ReadSize属性读三个成员。

合奏。ReadSize= 3; data1 = read(ensemble)
data1 =3×2表振动SimulationInput ___________________ ______________________________ {20202 x1时间表}{1 x1 Simulink.Simul万博1manbetxationInput}{20215x1 timetable} {1x1 Simulink.SimulationInput} {20204x1 timetable} {1x1 Simulink.SimulationInput}

返回一个表三横列,每行包含的数据从一个第一,第二,第三乐团成员。也更新了LastReadMember房地产的整体数据存储到字符串数组包含三个对应的文件的路径。避免设置ReadSize值太大,内存耗尽的风险而加载数据。

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

data2 =阅读(整体)
data2 =2×2表振动SimulationInput ___________________ ______________________________ {20213 x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput} {20224 x1时间表}{1 x1 Simuli万博1manbetxnk.SimulationInput}

版本历史

介绍了R2018a