主要内容

生成用于预测剩余使用寿命的代码

此示例演示如何使用MATLAB®编码器部署预测剩余使用寿命(RUL)的算法。当您训练了RUL预测模型(如线性梯度模型在MATLAB和准备部署预测算法到另一个环境。这个例子使用MATLAB编码器生成一个可从MATLAB执行的MEX文件。您可以使用类似的过程为MATLAB Coder支持的任何目标生成代码。金宝app

生成预测RUL代码的工作流如下图所示。第一步是使用来自系统的历史数据来适应RUL模型,如当数据到达时更新RUL预测. 您还必须编写一个入口点函数,从中生成代码。此函数是一个MATLAB函数,用于接收来自系统的新数据,并使用它预测新的RUL。

您可以使用此示例的工作流生成代码,使用基于降级的RUL模型预测剩余的有用寿命,线性梯度模型指数退化模型

拟合RUL模型

在生成用于RUL预测的代码之前,您必须使用历史数据适应RUL模型。对于本例,加载数据linTrainTables.mat。此文件包含随时间变化的某些条件指示器的测量值,并用列标签组织到表中“时间”“条件”. 使用该数据训练线性退化模型。(有关配置和培训此类RUL模型的更多信息,请参阅线性梯度模型.)

装载(“林特兰桌子,垫子”)mdl=线性梯度模型;安装(mdl、linTrainTables、,“时间”,“条件”)

为代码生成准备模型

拥有经过培训的RUL模型后,使用saveRULModelForCoder.这个函数将RUL模型保存到MAT文件中。以后,在入口点函数中,使用loadRULModelForCoder从该文件加载和重建RUL模型。

保存文件名=“savedModel.mat”;saveRULModelForCoder (mdl saveMATfilename);

定义入口点函数

这个入口点函数是要为其生成代码的函数。在预测RUL时,您的入口点函数可能会获取输入数据,以某种方式对其进行处理以提取条件指示器,然后使用predictRUL从模型中获得新的RUL估计。

对于本例,创建入口点函数degradationRULPredict.m,如图所示。

类型degradationRULPredict.m
函数[estRUL,ci,pdfRUL]=降级预测(数据)%#代码生成阈值=60;%Load prepared model mdl=loadRULModelForCoder('savedModel.mat');%将输入数据用于新预测[estRUL,ci,pdfRUL]=predictRUL(mdl,数据,阈值);结束

该函数接受一个由时间和条件指示值组成的数据点作为输入。这个函数使用loadRULModelForCoder加载先前保存的训练模型版本saveRULModelForCoder.该函数还包括必需的%#编码基因指令,它指示用代码分析器检查代码(MATLAB编码器)帮助您诊断和修复在代码生成或运行时可能导致错误的冲突。

入口点函数的功能和限制

本例简单的入口点函数加载模型,得到新的RUL预测。入口点函数可以执行其他操作,例如对输入数据进行进一步处理,以提取用于预测的条件指示器。但是,入口点函数中的所有函数和操作都必须支持代码生成。金宝app

函数也可以使用更新命令,根据新数据更新预测模型。为此,您可以包含额外的代码,以便在关闭并重新启动部署的系统时保留更新的模型参数。有关更多信息,请参见生成保留RUL模型状态以供系统重新启动的代码

您的入口点函数通常可以更改RUL模型对象的非只读属性。但是,以下属性的值(否则为读写属性)在生成的代码中是固定的。尝试在运行时更改这些属性会产生错误。

  • LifeTimeVariable

  • LifeTimeUnit

  • DataVariables

生成代码

要生成代码,必须提供具有入口点函数所期望的数据类型和格式的示例数据。对于本例,加载一些测试数据,其格式与用于训练RUL模型、时间表和条件指示器值的数据相同。由于入口点函数将一个时间和值作为其输入,因此从测试数据表中提取一个条目。对于代码生成,特定的值并不重要,只影响数据类型。

装载(“linTestData.mat”,“linTestData1”) testData = linTestData1(1,:);测试数据
测试数据=1×2表时间条件____ _________ 1 2.1316

打开MATLAB编码器应用程序并指定入口点函数

在MATLAB桌面上的应用程序选项卡,在下面代码生成,点击MATLAB编码器.MATLAB编码器应用程序在选择源文件页面打开。在生成函数代码框中,输入入口点函数的名称,降解预测.然后,单击下一个

指定输入数据类型

若要指定入口点函数的输入数据类型,请在“定义输入类型”页上使用测试数据号召降解预测.当您输入调用时,MATLAB编码器显示检测到的输入类型和输出数量。点击下一个确认。

生成代码

(可选)检查入口点函数以查找运行时出现的问题。要执行此操作,请单击检查问题。准备好后,单击下一个转到“生成代码”页。在此页中,指定代码生成的目标。您可以为MATLAB Coder支持的任何目标生成RUL预测代码,包括独立的C/C++代码、编译到库中的C/C++代码或编译到可执行文件的C/C++代码。例如,从金宝app构建类型列表,选择墨西哥人.MEX文件是一个可执行文件,可以从MATLAB中调用。

点击产生要生成MEX文件,降解预测. 有关MATLAB编码器功能及其生成的文件的更多信息,请参阅使用MATLAB Coder App生成C代码(MATLAB编码器)

生成代码与编码基因命令

作为使用MATLAB Coder应用程序的替代方法,您可以使用以下方法生成代码编码基因(MATLAB编码器)指挥部。

编码基因降解预测-args{testData}-nargout
代码生成成功。

验证生成的代码

为了验证生成的代码,在MATLAB命令提示符下,在测试数据上运行入口点MATLAB函数。然后,在相同的数据上运行生成的MEX文件,并确认结果相同。

[estRUL,ci,pdfRUL]=降解预测(测试数据);[estRUL_-mex,ci_-mex,pdfRUL_-mex]=降解预测(测试数据);

例如,将估算的RUL与MATLAB函数和生成的MEX文件进行比较。

estRUL
estRUL=114.2927
埃斯特鲁鲁梅克斯
estRUL_mex = 114.2927

现在,您可以将生成的代码用作已部署系统的一部分,以预测剩余的使用寿命。

另见

||

相关的话题