simulationEnsembleDatastore
管理生成的集成数据generateSimulationEnsemble
或者通过记录模拟数据金宝app
描述
一个simulationEnsembleDatastore
Object是一个专门用于开发使用模拟数据进行状态监测和预测性维护的算法的数据存储。
该对象指定存储在MATLAB数据文件(MAT-files)集合中的数据变量、自变量和条件变量。数据文件包含金宝appSimulink.SimulationData.Dataset
这些变量是在Simulink期间记录数据的结果金宝app®模型模拟。
有关演示模拟集成数据存储使用的详细示例,请参见生成和使用模拟数据集成.有关预测性维护工具箱™中数据集成的一般信息,请参见用于状态监测和预测性维护的数据集成.
创建
要创建simulationEnsembleDatastore
对象:
从Simulink模型生成并记录仿真数据。金宝app你可以用
generateSimulationEnsemble
或任何其他方式的日志模拟到磁盘。创建一个
simulationEnsembleDatastore
对象,该对象指向生成的模拟数据simulationEnsembleDatastore
命令(如下所述)。
如果您有先前生成的模拟数据generateSimulationEnsemble
或者其他方法,你可以使用创建函数simulationEnsembleDatastore
在任何时候创建一个新的模拟集成数据存储对象。
语法
描述
从以前使用生成的数据创建模拟集成系综
= simulationEnsembleDatastore (位置
)generateSimulationEnsemble
指定的文件夹中位置
.该函数从生成的mat文件中存储的信息识别生成数据中的集成变量。函数填充DataVariables
而且SelectedVariables
的属性系综
使用这些集成变量的名称。
输入参数
位置
- - - - - -文件路径
字符串|特征向量
存储模拟数据的位置的文件路径,指定为字符串或字符向量。文件路径可以是MATLAB支持的任何位置金宝app®数据存储,包括指向远程位置的IRI路径。然而,当你使用simulationEnsembleDatastore
管理远程数据时,不能使用writeToLastMemberRead
向集成数据存储区添加数据。有关在MATLAB中使用远程数据的详细信息,请参见使用远程数据
例子:pwd + "\simResults"
signallog
- - - - - -记录信号的变量名
字符串|特征向量
记录信号的变量名,指定为字符串或字符向量。这个输入参数告诉simulationEnsembleDatastore
存储的mat文件中的哪个数据变量包含日志模拟数据。变量名在信号记录
Simulink模型的配置参数,从中生成数据。金宝app当你使用generateSimulationEnsemble
为了为集成生成模拟数据,每个生成的mat文件都包含一个变量,PMSignalLogName
,指定记录信号的变量名。
例子:“logsout”
属性
DataVariables
- - - - - -集成中的数据变量
记录信号名称的字符串数组(默认)|字符串数组
集合中的数据变量,指定为字符串数组。数据变量是集成成员的主要内容。数据变量可以包括用于分析和开发预测性维护算法的测量数据或导出数据。例如,您的数据变量可能包括测量或模拟的振动信号和导出的值,如平均振动值或峰值振动频率。在实践中,数据变量、自变量和条件变量都是不同的变量集。
simulationEnsembleDatastore
的初始值DataVariables
以所有记录信号的名称在数据中生成generateSimulationEnsemble
.simulationEnsembleDatastore
还添加了变量SimulationInput
而且SimulationMetadata
来DataVariables
.这些变量包含关于如何执行模拟的信息。
你也可以指定DataVariables
使用字符向量的单元格数组,例如{“振动”;“转速计”}
,但变量名总是存储为字符串数组,(“振动”;“转速器”)
.如果指定变量名的矩阵,则将矩阵平展为列向量。
IndependentVariables
- - - - - -集合中的自变量
[]
(默认)|字符串数组
集合中的自变量,指定为字符串数组。通常使用自变量对集合成员进行排序。例如时间戳、运行时数或行驶里程。将此属性设置为集成中这些变量的名称。在实践中,数据变量、自变量和条件变量都是不同的变量集。
你也可以指定IndependentVariables
使用字符向量的单元格数组,例如{“时间”,“年龄”}
,但变量名总是存储为字符串数组,["时间";“时代”)
.如果指定变量名的矩阵,则将矩阵平展为列向量。
ConditionVariables
- - - - - -集合中的条件变量
[]
(默认)|字符串数组
集合中的条件变量,指定为字符串数组。根据集合成员所处的故障条件或其他操作条件,使用条件变量标记集合中的成员。在实践中,数据变量、自变量和条件变量都是不同的变量集。
你也可以指定ConditionVariables
使用字符向量的单元格数组,例如{“GearFault”;“温度”}
,但变量名总是存储为字符串数组,[" GearFault”;“温度”)
.如果指定变量名的矩阵,则将矩阵平展为列向量。
SelectedVariables
- - - - - -要读取的变量
记录信号名称的字符串数组
(默认)|字符串数组
从集合中读取的变量,指定为字符串数组。类时,使用此属性可指定将哪些变量提取到MATLAB工作区读
命令从集成中读取数据。读
中指定的每个名称返回包含表变量的表行SelectedVariables
.例如,假设你有一个集合,系综
,它包含六个变量,而你只想读取其中的两个,振动
而且FaultState
.设置SelectedVariables
财产和电话读
.
合奏。SelectedVariables = [“振动”;“FaultState”];数据=读取(集合)
SelectedVariables
可以是变量的任意组合DataVariables
,ConditionVariables
,IndependentVariables
属性。如果SelectedVariables
是空的,读
生成错误。
simulationEnsembleDatastore
的初始值SelectedVariables
到生成的数据中所有记录信号的名称generateSimulationEnsemble
.
你可以指定SelectedVariables
使用字符向量的单元格数组,例如{“振动”;“转速计”}
,但变量名总是存储为字符串数组,(“振动”;“转速器”)
.如果指定变量名的矩阵,则将矩阵平展为列向量。
ReadSize
- - - - - -要读取的成员数
1(默认)|正整数
一次从集成数据存储中读取的成员数,指定为小于集成中成员总数的正整数。默认情况下,读
命令返回包含来自一个集成成员的数据的单行表。从单个成员中读取多个成员的数据读
操作,将此属性设置为大于1的整数值。例如,如果ReadSize
= 3,则读
返回一个三行表,其中每行包含来自不同集成成员的数据。如果小于ReadSize
那么,成员是未读的读
返回一个表,其行数与剩余成员数相同。
集成数据存储属性LastMemberRead
包含最近一次读取的所有文件的名称读
操作。例如,如果ReadSize
= 3,则a读
操作集LastMemberRead
到包含三个文件名的字符串向量。
当你使用writeToLastMemberRead
,将要写入的数据指定为行数为的表ReadSize
.的writeToLastMemberRead
命令更新指定的成员LastMemberRead
,将一个表行写入每个指定文件。
改变了ReadSize
属性还会将集成重置为未读状态。例如,假设您每次读取一个集成成员(ReadSize
= 1),然后改变ReadSize
为3。下一个读
操作返回来自前三个集成成员的数据。
NumMembers
- - - - - -合奏团成员人数
正整数
此属性是只读的。
集合中的成员数,指定为正整数。
LastMemberRead
- - - - - -最后读取的集成成员的文件名
""
(默认)|字符串|字符串数组
此属性是只读的。
最后一个读入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到0。的数组金宝app仿真软件。SimulationInput
对象为集成中的每个成员配置Simulink模型。金宝app每个模拟在其自己的数据文件中生成集成的独立成员。创建这样一个数组,并使用setVariable
为每次运行分配齿故障增益值。
toothFaultValues = -2:0.5:0;% 5牙faultgain值为simin(ct) = Simulink.SimulationInput(mdl);金宝appsimin(ct) = setVariable(simin(ct),“ToothFaultGain”toothFaultValues (ct));结束
对于这个例子,模型已经配置为记录某些信号值,振动
而且转速计
(见使用信号日志导出信号数据(金宝app模型)).generateSimulationEnsemble
进一步配置模型为:
将记录的数据保存到指定文件夹中的文件中。
使用
时间表
信号测井格式。存储每个
金宝app仿真软件。SimulationInput
对象中添加相应的日志数据。
为生成的数据指定一个位置。对于本例,将数据保存到名为数据
在当前文件夹中。的指标状态
是1(真)如果所有的模拟都没有错误。
mkdir数据位置= fullfile(pwd,“数据”);[status,E] = generateSimulationEnsemble(simin,location);
[31- 8 -2022 04:51:02]运行模拟…[31-Aug-2022 04:51:15]完成5次模拟运行中的2次[31-Aug-2022 04:51:18]完成5次模拟运行中的4次[31-Aug-2022 04:51:22]完成5次模拟运行中的5次
在数据
文件夹,检查其中一个文件。每个文件都是一个mat文件,包含以下MATLAB®变量:
SimulationInput
- - -金宝app仿真软件。SimulationInput
对象,该对象用于配置用于生成文件中的数据的模型。您可以使用它来提取有关运行模拟的条件(例如故障或正常)的信息。logsout
——一个数据集
对象,其中包含Simulink模型配置为记录的所有数据。金宝appPMSignalLogName
—包含日志数据的变量的名称(“logsout”
在这个例子中)。的simulationEnsembleDatastore
命令使用此名称解析文件中的数据。SimulationMetadata
-关于生成数据的模拟的其他信息记录在文件中。
现在可以使用生成的数据创建模拟集成数据存储。由此产生的simulationEnsembleDatastore
对象指向生成的数据。对象列出集成中的数据变量,默认情况下选择所有变量进行读取。检查DataVariables
而且SelectedVariables
属性来确认这些指定。
ensemble = simulationEnsembleDatastore(location)
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振动
合奏。SelectedVariables
ans =4 x1字符串SimulationInput SimulationMetadata Tacho振动
您现在可以使用系综
读取和分析集成数据存储中生成的数据。看到simulationEnsembleDatastore
获取更多信息。
从集成成员中提取存储变量的子集
一般来说,使用读
命令提取数据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
对象将所有这些变量指定为数据变量和所选变量,如DataVariables
而且SelectedVariables
属性。
合奏。数据变量
ans =5 x1字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“Tacho”“振动”
合奏。SelectedVariables
ans =5 x1字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“Tacho”“振动”
假设对于您想做的分析,您只需要振动
数据和金宝app仿真软件。SimulationInput
对象,该对象描述模拟此成员数据的条件。集合奏。SelectedVariables
来指定要读取的变量。的读
命令然后从当前集成成员中提取这些变量。
合奏。SelectedVariables = [“振动”;“SimulationInput”];Data1 = read(集合)
data1 =1×2表振动SimulationInput ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。金宝appSimulationInput}
数据。振动
单元格数组是否包含一个时间表
存储模拟时间和相应的振动信号。现在可以根据需要处理这些数据。例如,从表中提取振动数据并绘制它。
vibdata1 = data1.振动{1};情节(vibdata1.Time vibdata1.Data)标题(“振动-乐团第一成员”)
下次你打电话的时候读
在这个集合上,最后读的成员指定向前推进到集合的下一个成员(参见用于状态监测和预测性维护的数据集成).从集合的下一个成员中读取所选变量。
Data2 = read(集合)
data2 =1×2表振动SimulationInput ___________________ ______________________________ { 20215 x1时间表}{1 x1仿真软件。金宝appSimulationInput}
为了证实这一点data1
而且data2
包含来自不同集成成员的数据,检查不同模型参数的值,ToothFaultGain
.对于每个集成,此值存储在变量
字段SimulationInput
变量。
data1.SimulationInput {1} .Variables
ans =带属性的变量:名称:'ToothFaultGain'值:-2工作空间:'global-workspace'上下文:"描述:""
data2.SimulationInput {1} .Variables
ans =带属性的变量:名称:'ToothFaultGain'值:-1.5000工作空间:'global-workspace'上下文:"描述:""
这个结果证实了data1
是来自乐团成员的跟ToothFaultGain
= -2,和data2
是从会员那里来的ToothFaultGain
= -1.5.
将派生数据附加到集成成员
您可以处理集成数据存储中的数据,并向集成成员添加派生变量。对于本例,处理一个变量值来计算一个标签,该标签指示集成成员是否包含存在故障时获得的数据。然后将该标签添加到集合中。
对于本例,使用以下代码创建一个simulationEnsembleDatastore
对象使用之前在不同故障值处运行Simulink®模型生成的数据。金宝app(见generateSimulationEnsemble
)。集成包括一个模型参数的五个不同值的仿真数据,ToothFaultGain
.该模型被配置为将模拟数据记录到一个名为logsout
在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 =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动 _______________ ______________________________ _________________________________ ___________________ ___________________ {' logsout} {1 x1仿真软件。金宝appSimulationInput} {1x1 金宝appSimulink。SimulationMetadata} {20202x1 timetable} {20202x1 timetable}
默认情况下,存储在集成数据中的所有变量都被指定为SelectedVariables
.因此,返回的表行包括所有集成变量,包括一个变量SimulationInput
,其中包含金宝app仿真软件。SimulationInput
为该集成成员配置模拟的对象。该对象包括ToothFaultGain
用于集成成员的值,该值存储在其数据结构中变量
财产。检查这个值。(有关如何存储模拟配置的详细信息,请参见金宝app仿真软件。SimulationInput
(金宝app模型))。
数据。SimulationInput {1}
ans = SimulationInput属性:ModelName: 'TransmissionCasingSimplified' InitialState: [0x0 Simulink.op. pr金宝appoperties]ModelOperatingPoint] ExternalInput: [] ModelParameters: [0x0 金宝appSimulink.Simulation.]ModelParameter] BlockParameters: [0x0 金宝appSimulink.Simulation.]BlockParameter]变量:[1x1 Simulink.金宝appSimulation.]变量]PreSimFcn: [] PostSimFcn: [] UserString: "
Inputvars = data.SimulationInput{1}.Variables;Inputvars。的名字
ans = '牙齿缺陷增加'
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”“振动”“牙齿故障”
这个操作在概念上等同于向集成数据表中添加一列。现在,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 = "牙齿缺陷"
您可以将新变量添加到合奏。SelectedVariables
当你想读出来做进一步分析的时候。类中存储的数据的更多操作和分析方法的示例simulationEnsembleDatastore
对象,看到利用Simu金宝applink生成故障数据.
在一次操作中读取多个集成成员
方法的一次调用中从多个集成成员读取数据读
命令,使用ReadSize
集合数据存储的属性。这个例子使用了simulationEnsembleDatastore
,但您可以使用相同的技术fileEnsembleDatastore
.
使用下面的代码创建一个simulationEnsembleDatastore
对象使用之前在不同故障值处运行Simulink模型生成的数据(参见金宝appgenerateSimulationEnsemble
).集成包括一个模型参数的五个不同值的仿真数据,ToothFaultGain
.(由于数据量大,数据量大解压缩
操作可能需要一两分钟。)指定要读取的一些数据变量。
解压缩simEnsData.zip%提取压缩文件集合= simulationEnsembleDatastore(pwd,“logsout”);合奏。SelectedVariables = [“振动”;“SimulationInput”];
默认情况下,调用读
类的值返回一个单行表振动
而且SimulationInput
第一个集成成员的变量。改变ReadSize
属性一次读取三个成员。
合奏。ReadSize= 3; data1 = read(ensemble)
data1 =3×2表振动SimulationInput ___________________ ______________________________ { 20202 x1时间表}{1 x1仿真软件。金宝appSimulationInput} {20215x1时间表}{1x1 Simulink金宝app。SimulationInput} {20204x1时间表}{1x1 Simulink金宝app。SimulationInput}
读
返回一个三行表,其中每行包含来自第一、第二和第三个集成成员之一的数据。读
还更新LastReadMember
属性设置为包含三个相应文件路径的字符串数组。避免设置ReadSize
到一个大到在加载数据时可能耗尽内存的值。
如果集合包含三个或更多的额外成员,则下一个读
操作返回来自第4、第5和第6个成员的数据。因为这个例子的集合总共只包含五个成员,所以下一个读
操作只返回两行。
Data2 = read(集合)
data2 =2×2表振动SimulationInput ___________________ ______________________________ { 20213 x1时间表}{1 x1仿真软件。金宝appSimulationInput} {20224x1时间表}{1x1 Simulink金宝app。SimulationInput}
版本历史
在R2018a中引入
打开举例
Vous possédez une版本modifiée de cet举例。Souhaitez-vous ouvrir cet示例avec vos修改?
对MATLAB
Vous avez cliqué sur un lien qui对应à cette命令MATLAB:
倒exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne 金宝appsupport pas Les command MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。