主要内容

模拟训练数据存储

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

描述

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

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

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

创建

创建模拟训练数据存储对象:

  1. 从Simulink模型生成并记录仿真数据金宝appgenerateSimulationEnsemble或任何其他将模拟记录到磁盘的方法。

  2. 创建一个模拟训练数据存储对象,该对象使用模拟训练数据存储命令(如下所述)。

如果以前使用生成了模拟数据generateSimulationEnsemble或其他方式,你可以使用创建函数模拟训练数据存储随时创建新的仿真集成数据存储对象。

描述

例子

合奏=模拟安装数据存储(地点)从以前使用生成的数据创建模拟集成generateSimulationEnsemble在指定的文件夹中地点这个function identifies ensemble variables in the generated data from information stored in the generated MAT-files. The function populates the数据变量选定变量特性合奏使用这些集合变量的名称。

例子

合奏=模拟安装数据存储(地点,信号日志)使用信号日志确定MAT文件中的哪个变量包含记录的信号。使用中指定的变量名信号测井生成数据的Simulink模型的配置参数。指定此变量允许集成将金宝app这些信号视为集成数据变量,而不是信号日志MAT文件中的其他变量也作为集合数据变量返回。

合奏=模拟安装数据存储(地点,信号日志,名称、值)指定附加的性质使用一个或多个名称-值对参数创建对象的。例如,使用'独立变量',[“年龄”;“ID”]指定独立变量,当你创建对象。

输入参数

展开全部

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

例子:pwd+“\simResults”

记录信号的变量名,指定为字符串或字符向量。该输入参数告诉模拟训练数据存储存储的MAT文件中的哪个数据变量包含记录的模拟数据。此变量名称在信号测井生成数据的Simulink模型的配置参数。当你使用金宝appgenerateSimulationEnsemble以产生仿真数据用于合奏,每个所生成的MAT-文件包含一个变量,PMSignalLogName,指定记录信号的变量名。

例子:“logsout”

特性

展开全部

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

模拟训练数据存储设置的初始值数据变量使用生成的数据中所有记录信号的名称generateSimulationEnsemble.模拟训练数据存储还添加了变量模拟输入模拟元数据数据变量. 这些变量包含有关如何执行模拟的信息。

您还可以指定数据变量使用字符向量的单元阵列,如{ '振动'; '测速'},但变量名始终存储为字符串数组,[“振动”,“测速”]. 如果指定变量名矩阵,则该矩阵将展平为列向量。

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

您还可以指定独立变量使用字符向量的单元阵列,如{'Time';'Age'},但变量名始终存储为字符串数组,[美国“时代”,“时代”]. 如果指定变量名矩阵,则该矩阵将展平为列向量。

在合奏条件变量,指定为字符串数组。使用条件变量根据所述故障状况或收集在其下合奏构件其他操作条件标记在合奏的成员。在实践中,您的数据变量,自变量和条件变量是完全不同的变量集。

您还可以指定条件变量使用字符向量的单元阵列,如{ 'GearFault'; '温度'},但变量名始终存储为字符串数组,[“齿轮故障”;“温度”]. 如果指定变量名矩阵,则该矩阵将展平为列向量。

变量以从集合,指定为字符串阵列读取。使用此属性来指定当您使用提取到MATLAB工作空间的变量阅读从集合中读取数据的命令。阅读返回一个表行,其中包含中指定的每个名称的表变量选定变量.例如,假设你有一个合奏,合奏,包含六个变量,你想读的只有他们两个人,振动断层状态.设定选定变量属性和调用阅读.

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

选定变量可以在各变量的任意组合数据变量,条件变量,及独立变量属性。如果选定变量是空的,,阅读生成一个错误。

模拟训练数据存储设置的初始值选定变量生成的数据中所有记录信号的名称generateSimulationEnsemble.

您可以指定选定变量使用字符向量的单元阵列,如{ '振动'; '测速'},但变量名始终存储为字符串数组,[“振动”,“测速”]. 如果指定变量名矩阵,则该矩阵将展平为列向量。

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

合奏数据存储性能LastMemberRead包含最近一次读取期间读取的所有文件的名称阅读例如,如果READSIZE=3,则a阅读操作集LastMemberRead指向包含三个文件名的字符串向量。

当您使用WriteLastMemberRead,将要写入的数据指定为行数等于的表READSIZE这个WriteLastMemberRead命令更新由指定的成员LastMemberRead,将一个表行写入每个指定文件。

改变READSIZE属性还将集合重置为其未读状态(READSIZE=1),然后更改READSIZE到3.下一个阅读操作返回前三个集合成员的数据。

此属性是只读的。

在集合成员的数目,指定为一个正整数。

此属性是只读的。

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

当你打电话的时候WriteLastMemberRead将数据添加回合奏数据存储,该功能写入到指定的文件LastMemberRead.

默认情况下,阅读一次从一个集合成员读取数据(READSIZE集成数据存储的属性为1)。当READSIZE> 1,LastMemberRead是一个字符串数组,包含最近一次读取的所有文件的路径阅读活动

此属性是只读的。

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

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

目标函数

这个阅读WriteLastMemberRead功能专门用于预测性维护工具箱合奏数据。其他功能,如重启hasdata,与使用的相同数据存储对象。要将特定的集成成员提取到更小或更专门的集成数据存储中,请使用子集。若要使用单个命令将所有成员数据传输到表或单元格数组中,请使用readall.分割信号群的数据存储,使用分区(ds、n、索引)的语法分割功能。

阅读 从一个数据存储合奏读取部件数据
WriteLastMemberRead 将数据写入集成数据存储的成员
子集 从现有集成数据存储的子集创建新的集成数据存储
重启 复位数据存储到初始状态
hasdata 确定数据是否可读取
进步 确定有多少数据被读取
readall 阅读数据存储的所有数据
numpartitions 数据存储分区数
分割 对数据存储进行分区
高的 创建高数组
可分割 确定数据存储是否可分区
易怒 确定数据存储是否可洗牌

例子

全部崩溃

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

加载Simulin金宝appk模型。此模型是中所述齿轮箱模型的简化版本利用Simu金宝applink生成故障数据. 在本例中,仅建模了一种故障模式,即轮齿故障。

MDL ='TransmissionCasingSimplified';开放式系统(mdl)

将齿轮轮齿故障建模为系统中的扰动轮齿故障子系统。干扰的大小由模型变量控制牙缝增益, 在哪里ToothFaultGain = 0对应于无轮齿故障(正常运行)。要生成故障数据集合,请使用generateSimulationEnsemble以不同的值模拟模型牙缝增益,范围从-2到零。此函数使用金宝app模拟输入对象配置Simulink模型在合奏每个成员。金宝app每个模拟产生在其自己的数据文件中的合奏的单独构件。创建这样的阵列,和使用设置变量为每次运行分配齿故障增益值。

齿形故障值=-2:0.5:0;%5.1增益值对于ct=numel(toothFaultValues):-1:1 simin(ct)=Simu金宝applink.SimulationInput(mdl);simin(ct)=setVariable(simin(ct),'ToothFaultGain',牙错值(ct);结束

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

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

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

  • 存储每个金宝app模拟输入对象与相应的日志数据一起保存在保存的文件中。

指定生成数据的位置。对于本例,将数据保存到名为资料在当前文件夹中。指示器地位为1(真)如果所有模拟均无错误完成。

mkdir资料位置=完整文件(pwd,“数据”); [状态,E]=生成模拟集成(simin,位置);
[01-Sep-20211:03:45]运行模拟…[01-Sep-20211:04:11]完成5次模拟运行中的1次[01-Sep-20211:04:27]完成5次模拟运行中的2次[01-Sep-20211:04:43]完成5次模拟运行中的3次[01-Sep-20211:04:58]完成5次模拟运行中的4次[01-Sep-20211:05:12]完成5次模拟运行中的5次

内部资料文件夹中,检查其中一个文件。每个文件都是包含以下MATLAB®变量的MAT文件:

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

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

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

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

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

集成=模拟集成数据存储(位置)
ensemble=simulationEnsembleDatastore,属性为:DataVariables:[4x1字符串]独立变量:[0x0字符串]条件变量:[0x0字符串]SelectedVariables:[4x1字符串]读取大小:1个成员:5个LastMemberRead:[0x0字符串]文件:[5x1字符串]
ensemble.DataVariables
ans=4x1串“SimulationInput”“SimulationMetadata”“Tacho”“振动”
集合.SelectedVariables
ans=4x1串“SimulationInput”“SimulationMetadata”“Tacho”“振动”

您现在可以使用合奏读取和分析集成数据存储中生成的数据。请参阅模拟训练数据存储想要查询更多的信息。

通常,您使用阅读命令从提取数据模拟训练数据存储对象导入MATLAB®工作区。通常,您的集合包含的变量比您需要用于特定分析的变量还要多。使用选定变量财产模拟训练数据存储对象来选择要读取的变量子集。

对于本例,使用以下代码创建模拟训练数据存储对象,该对象使用以前通过在各种故障值下运行Simulink®模型生成的数据(请参见金宝appgenerateSimulationEnsemble)。集合包括模型参数的五个不同值的模拟数据,牙缝增益. 由于数据量大,因此解压操作需要几分钟的时间。

解压simEnsData.zip%提取压缩文件集成=模拟集成数据存储(pwd,“logsout”)
ensemble=simulationEnsembleDatastore,属性为:DataVariables:[5x1字符串]独立变量:[0x0字符串]条件变量:[0x0字符串]SelectedVariables:[5x1字符串]读取大小:1个成员:5个LastMemberRead:[0x0字符串]文件:[5x1字符串]

生成数据的模型,变速箱简化,其配置使得生成的集合包含包括加速计数据在内的变量,振动,以及转速表数据,测速仪。默认情况下模拟训练数据存储对象将所有这些变量指定为数据变量和选定变量,如数据变量选定变量财产。

ensemble.DataVariables
ans=5x1字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“测速仪”“振动”
集合.SelectedVariables
ans=5x1字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“测速仪”“振动”

假设对于您想要进行的分析,您只需要振动数据和金宝app模拟输入对象描述根据此构件数据进行了模拟的条件。放集合.SelectedVariables指定要读取的变量阅读命令然后从当前集合成员中提取这些变量。

ensemble.SelectedVariables=[“振动”;“模拟输入”]; 数据1=读取(集成)
数据1=1×2表振动SimulationInput ___________________ ______________________________ {20202x1时间表} {1x1的Simulink.Simula金宝apptionInput}

数据.振动是含细胞阵列的一个时间表它存储模拟时间和相应的振动信号。您现在可以根据需要处理这些数据。例如,从表中提取振动数据并绘制它。

vibdata1=data1.Vibration{1};绘图(vibdata1.Time,vibdata1.Data)标题(“振动-第一乐团成员”)

图包含一个轴对象。轴与标题对象振动 - 第一集合构件包含型线的对象。

你叫下一次阅读在此集合上,最后读取的成员名称将前进到集合的下一个成员(请参见用于状态监测和预测性维护的数据集成).从集合的一个成员阅读选择的变量。

数据2=读取(集成)
数据2=1×2表振动SimulationInput ___________________ ______________________________ {20215x1时间表} {1x1的Simulink.Simula金宝apptionInput}

证实数据1数据2包含来自不同集合成员的数据,检查不同模型参数的值,牙缝增益。对于每个集合,此值存储在变量领域模拟输入变数。

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

这一结果证实了数据1是来自乐队成员的牙缝增益= -2,和数据2是由具有牙缝增益= -1.5.

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

对于本例,使用以下代码创建模拟训练数据存储对象,该对象使用以前通过在各种故障值下运行Simulink®模型生成的数据。(请参阅金宝appgenerateSimulationEnsemble)集合包括模型参数的五个不同值的模拟数据,牙缝增益。将模型配置为将模拟数据记录到名为罗格苏特在存储这个例子在MAT文件simEnsData.zip. 由于数据量大,因此解压操作可能需要一两分钟。

解压simEnsData.zip%提取压缩文件集成=模拟集成数据存储(pwd,“logsout”)
ensemble=simulationEnsembleDatastore,属性为:DataVariables:[5x1字符串]独立变量:[0x0字符串]条件变量:[0x0字符串]SelectedVariables:[5x1字符串]读取大小:1个成员:5个LastMemberRead:[0x0字符串]文件:[5x1字符串]

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

数据=读取(集成)
资料=1×5表PMSignalLogName SimulationInput SimulationMetadata测速振动_______________ ______________________________ _________________________________ ___________________ ___________________ { 'logsout'} {1x1的Simulink.Sim金宝appulationInput} {1x1的Simulink.SimulationMetadata} {20202x1时间表} {20202x1时间表}

默认情况下,存储在集合数据中的所有变量都指定为选定变量因此,返回的表行包括所有集合变量,包括一个变量模拟输入,其中包含金宝app模拟输入对象,该对象配置了此集合成员的模拟。该对象包括牙缝增益用于集成成员的值,存储在其变量财产。检查该值。(有关如何存储模拟配置的更多信息,请参阅金宝app模拟输入(金宝appSimulink).)

data.simulationput{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.Name
ans='TOOTH FAULT GAIN'
输入变量值
ans=-2

假设您想要转换牙缝增益将每个集合成员的值转换为一个二进制指示器,指示是否存在齿故障。进一步假设,根据您使用该系统的经验,您知道大小小于0.1的牙齿故障增益值足够小,可以认为是正常操作。将该集合的增益值转换为-0.1<增益<0.1时为0(无故障)的指示器,否则为1(故障)。

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

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

ensemble.DataVariables=[ensemble.DataVariables;“ToothFault”];集合。数据变量
ans=6x1的字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“转速计”“振动”“齿故障”

此操作在概念上相当于向集合数据表中添加一列。既然数据变量包含新变量名,使用WriteLastMemberRead.

writeToLastMemberRead(合奏,“牙错”,sT);

实际上,您希望将牙齿故障指示器附加到集合中的每个成员。为此,请将集合数据存储重置为其未读状态,以便下一次读取操作从第一个集合成员开始。然后,循环所有集合成员,计算牙断层用于每个成员并附加它。这个重启操作不会更改ensemble.DataVariables, 所以“ToothFault”仍然存在在该列表中。

重置(合奏);sT=假;虽然hasdata(集成)data=read(集成);InputVars=data.SimulationInput{1}.变量;TFGain=InputVars.Value;sT=abs(TFGain)<0.1;WriteLastMemberRead(集成,“牙错”,sT);结束

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

ensemble.ConditionVariables={“ToothFault”};集合。条件变量
ANS = “ToothFault”

您可以将新变量添加到集合.SelectedVariables当你想读出来做进一步的分析时。例如,一个例子显示了更多的方法来操作和分析存储在数据库中的数据模拟训练数据存储对象,请参见利用Simu金宝applink生成故障数据.

在一次调用中从多个集合成员读取数据阅读命令,使用READSIZE集合数据存储的属性。此示例使用模拟训练数据存储,但您可以使用相同的技术文件集成数据存储.

使用下面的代码来创建模拟训练数据存储对象,该对象使用以前通过在各种故障值下运行Simulink模型生成的数据(请参见金宝appgenerateSimulationEnsemble).该合奏包括用于模型参数的五个不同的值的模拟数据,牙缝增益(由于数据量大解压操作可能需要一两分钟。)指定一些要读取的数据变量。

解压simEnsData.zip%提取压缩文件集成=模拟集成数据存储(pwd,“logsout”); ensemble.SelectedVariables=[“振动”;“模拟输入”];

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

ensemble.ReadSize=3;数据1=读取(集成)
数据1=3×2表振动模拟投入{1x1模拟投入{20215x1模拟投入{1x1模拟投入}金宝app

阅读返回一个三排表,其中每一行包含来自所述第一,第二,和第三集合成员中的一个数据。阅读还更新了最后一名成员属性设置为包含三个相应文件路径的字符串数组。请避免设置READSIZE设置为一个很大的值,以便在加载数据时有内存不足的风险。

如果集合包含三个或更多附加成员,则下一个阅读操作从第四、第五和第六个成员返回数据。因为这个示例的集合总共只包含五个成员,所以下一个阅读操作返回只有两排。

数据2=读取(集成)
数据2=2×2表振动模拟投入{1x1模拟投入{20224x1模拟投入{1x1模拟投入}金宝app
R2018a中引入