App-Generated解剖MATLAB代码
与诊断功能设计,您可以生成MATLAB®自动化的代码和变量选择的计算特性。这个生成的代码接受任何合奏数据配置一样整体数据导入到应用程序,并生成一个新特性表,以及计算信号,光谱,和排名表,可用于特征分析或模型的训练。代码复制各种选项中设置的应用程序,并可以执行:
为每个成员Full-signal计算信号和特征
排名为特征
Ensemble-level计算描述整体行为
并行处理
处理分段信号,也被称为框架处理
整体管理是一个基本组件生成的代码。信息数据的集合体和合奏变量类型,明白了数据集合体状态监测和预测维护。
可以比较这个功能描述和代码生成您自己的代码的应用。更多的信息,知道了使用生成的MATLAB代码自动特征提取。一个例子,演示如何生成代码,请参阅生成诊断功能设计的MATLAB函数。为一个例子,它提供了一个设置框架代码生成,明白了执行预后功能退化系统排名使用诊断功能设计。
基本功能流
的图展示了基本功能流生成的代码。在这个图中,函数返回功能和派生变量,使用串行处理,作用于完整的信号。
图优惠代码流分为三个主要部分:初始化,循环成员,创建输出。
的初始化块进行初始配置。具体操作取决于您最初导入的数据类型和指定的变量和功能代码生成。
循环成员块操作执行的所有变量和特征计算一个成员。
创建输出提取和格式特征表和完整的合奏。
输入
函数作用于输入数据符合您最初的数据导入到应用程序。当你计划来生成代码的应用程序,在相同的格式导入数据的数据建议你计划申请代码。
如果您导入工作空间变量,如一个表或从内存单元阵列,该函数需要一个表或单元阵列。
如果您导入一个文件或模拟整体数据存储,该函数需要一个文件或模拟整体数据存储。
代码必须有一个变量的输入数据结构,类似于数据导入到应用程序。输入集合可以包含额外的变量。代码忽略了额外变量,不他们标记为错误。
初始化
初始化块中,代码配置一个整体,它包含变量的输入和输出的函数计算循环块成员。这些计算输出包括变量和功能时明确选择生成的代码和任何额外的变量,如运输安全管理局
信号,任何你的功能要求。
如果输入的数据是一个表或单元阵列,代码创建一个
workspaceEnsemble
对象,包括变量对应于输入数据变量。这个对象是类似于一个数据存储对象,但它作用于数据在内存中而不是在外部文件中。如果输入数据
simulationEnsembleDatastore
或者一个fileEnsembleDatastore
对象,直接作用于对象的代码。
一旦合奏初始化的代码,代码将所有变量和特征计算在计算成员。代码消除冗余的变量独特的
函数。
图显示了一个示例的一个工作区合奏和它的数据变量。数据变量确定输入信号,输出信号和光谱特性。
在初始化期间关键ensemble-related功能包括:
重置
——重置合奏原来未读状态,这样代码读取从一开始workspaceEnsemble
——整体对象管理数据在内存中fileEnsembleDatastore
——整体对象,管理外部文件中的数据simulationEnsembleDatastore
——整体对象管理的外部日志或模拟数据文件
请注意
在初始化过程中,函数不preallocate数组处理期间使用。缺乏预先配置是为了清晰和灵活性,由于代码必须运行在一个输入合奏与任意数量的成员。在后续计算周期,添加新数据计算中间结果表,抑制MATLAB代码分析器使用在线评论对预先配置的警告% #好< AGROW >
。关于代码分析器消息的偏好信息,看到代码分析器的偏好。
成员计算循环
在成员计算循环,函数执行所有member-specific计算,一次一个成员。
一系列的读
函数调用启动循环,连续阅读每个乐团成员,直到没有乐团成员离开了。接下来的计算读
命令提供的成员,所有指定的变量和功能。
收集运行等级结果表计算结果为每个变量或特性集。
图显示了一个示例的一个等级结果表。在这里,结果表包含两个嵌入表包含的特性和嵌入式的时间表包含计算信号。
一旦所有计算完成后,将正式成员的代码结果表返回主合奏。
成员计算使用试一试
/抓
结合来处理输入数据不能被处理。这种方法可以防止错误数据停止代码执行。
代码使用这些关键ensemble-management功能:
读
——读下一个乐团成员readMemberData
——从一个乐团成员为一个特定的变量中提取数据writeToLastMemberRead
——写入数据集合成员表
——整体数组,其中包含变量和特征列和成员行而得名的array2table
将数组转换成一个表时间表
——专业member-specific表包含信号命名变量列和一个特定的时间为每一行array2timetable
——一个数组转换为一个时间表
输出
生成函数的主要输出是一个功能表,代码提取使用函数readFeatureTable
。这个输出是一样的你是否使用工作区合奏或一个数据存储作为输入。功能表包含标量特征和条件变量。
功能表的图显示了一个示例。每一行代表一个成员。第一列包含条件变量,和随后的列包含一个标量特征值。
使用可选的第二个输出参数返回集合本身。如果你的函数的输入是一个表或单元数组,函数使用工作区合奏转换成表readall
函数,并返回表。
输出表的图显示了一个示例。每一行代表一个成员。前两列的输入变量,其余列包含特性或计算变量。
如果你的原始函数是基于一个进口一个数据存储对象,函数返回更新后的数据存储对象。
输出的代码包含这些关键功能:
readFeatureTable
——读条件变量和特征数据从一个数据集到一个表readall
——读取所有数据从一个数据集到一个表
排名
当您选择一个或多个排序表生成代码时,后面的功能包括一个排名部分的提取特性表,如图。图中显示的细节只有部分的流程图,改变从基本功能流图。在创建输出,当使用排名图显示所有输出参数。
初始化排名,提取特征值和标签的代码(条件变量值)从功能表。然后定义了类组的代码标签转换成数值使用函数grp2idx
将一组索引分配给每个特性。例如,如果条件变量FaultCode
有标签“错误”
,“退化”
,“健康”
,grp2idx
团体成员与这些标签组1、2和3。
对于每个排名方法,代码计算得分为每个特性与这些步骤:
正常使用指定的标准化方案的特性。
调用该函数的排名方法,使用单独的组群摄面具。特定的语法取决于排名方法的功能。
如果指定一个correlation-importance因素,更新使用
correlationWeightedScore
。相关性权重降低特性高度相关的更高的分数排名功能,因此是多余的。追加分数得分矩阵和方法列表的方法。
然后创建一个排序表的代码使用sortrows
对行进行排序的分数排序在代码生成方法中指定的应用程序。
图显示了一个示例的一个排名四人桌的特性,按t检验结果。
使用这些关键功能的代码管理排名:
grp2idx
——标签转换为数值correlationWeightedScore
——重量特性分级与相关因子得分sortrows
——特性通过排序行得分排名
系综统计和残留物
系综统计是统计指标,代表整个合奏,而不是一个单独的成员。例如,在应用程序中,您可以指定合奏最大振动信号。成员统计包含结果,对于每次示例,振动值是所有成员的最大振动值。
您可以使用系综统计计算残留通过减去相同的整体指标的信号为一个特定的成员变量。例如,如果系综均值代表平均操作点,你可以减去均值在操作点隔离所有成员的行为。分离信号的一种形式残留。
图演示了代码流,当您指定特性基于平均残余信号。
在这个流,有两个独立的循环。第一个成员循环计算整体统计。第二个成员循环执行信号、频谱和功能处理。第二成员处理循环流程图,说明了残留信号和residue-based功能处理步骤。
循环1:系综统计处理
计算系综统计指定变量,代码首先遍历成员,同时保持一个累加器。在给定的点循环序列,蓄电池可能包含,例如:
到目前为止的最大信号值计算
运行的所有数据值和迭代数
到目前为止最小的信号值计算
蓄电池的图显示了一个示例内容和运行总和和计数的意思是
变量。
的循环迭代,合奏最大和最小信号传输的代码从蓄电池系综统计最大和最小变量。整体计算的代码意味着合奏总和除以计数的数量。
最终合奏的图显示了一个示例数据表和决赛的意思是
变量现在包含均值信号。
循环2:残渣处理
在处理循环的主要成员,创建残留信号变量的代码减去指定的指定信号的统计数据,这些残留物和包以同样的方式与其他信号和特征。
图显示了一个示例的一员与残留结果表。表包含两个残留信号和两个特征集计算的信号。
并行处理
当你指定并行处理,分区乐团成员的代码到subensembles并执行完整的成员为每个subensemble并行处理循环,图中显示。
如果主要的合奏workspaceEnsemble
对象,然后在每个partition-processing周期结束时,将更新subensemble代码保存为一个细胞数组中存储所有subensembles的结果。下面的图显示了一个这样的例子数组连同前两个细胞。在这个图中,每个分区包含13个成员。
如果主要乐团是一个工作区合奏,那么所有分区处理完成后,将结果分区和更新的代码主要使用的合奏刷新
命令。
如果主要乐团是一个数据存储对象,然后直接更新对象的代码时,它将结果写入subensemble成员的每个成员循环。
并行处理的代码使用这些关键功能:
numpartitions
——数量的分区独立乐团成员分区
——分区一个乐团刷新
——更新工作区合奏重新分区结果
框架处理
当你有指定应用程序框架处理,生成的代码将每个信号正式成员分为段,或帧。这些帧存储的大小和频率框架的政策。
这个数字说明了流。在每个成员的代码执行一个帧循环回路。当你选择特性生成代码,应用程序选择一个框架政策约束你的特性。生成函数因此从未包含不止一个帧循环。
在初始化部分,只增加了输入变量的代码和框架政策id,如FRM_2
,数据变量。代码并不会增加计算的变量。这些变量存储在FRM_
变量。
在循环的第一部分成员,代码:
读取正式成员的信号。
创建一个帧间隔表,跨越了整个信号的时间范围,包含每一帧的起始和终止时间,使用
frameintervals
。初始化一个框架表在会员级别。最终这个表包含的所有帧的计算变量值的成员。
的第二部分成员循环帧循环。对于每一帧,代码:
使用帧间隔信息来提取数据帧从完整的信号。
计算信号、光谱和特性以同样的方式至于full-signal处理在会员级别。计算每一个新变量后,附加变量的代码框架的结果表。图显示了一个示例的一个成员表。前两个元素包含框架的启动和停止时间间隔。最后一个元素包含的特性计算框架。
当变量计算完成后,完成附加的代码框架结果表的等级框架表。用户等级表的图显示了一个示例,其中包含所有成员的帧的结果。
成员的最后操作循环是编写完成的成员框架表到乐团成员。
创建功能表的输出基本情况本质上是一样的,但是每个成员变量现在包括所有的段。
另请参阅
frameintervals
|workspaceEnsemble
|grp2idx
|readall
|correlationWeightedScore
|simulationEnsembleDatastore
|fileEnsembleDatastore
|重置
|独特的
|读
|readMemberData
|writeToLastMemberRead
|刷新