此示例演示如何使用MATLAB®编码器部署预测剩余使用寿命(RUL)的算法。当您训练了RUL预测模型(如线性梯度模型
在MATLAB和准备部署预测算法到另一个环境。这个例子使用MATLAB编码器生成一个可从MATLAB执行的MEX文件。您可以使用类似的过程为MATLAB Coder支持的任何目标生成代码。金宝app
生成预测RUL代码的工作流如下图所示。第一步是使用来自系统的历史数据来适应RUL模型,如当数据到达时更新RUL预测. 您还必须编写一个入口点函数,从中生成代码。此函数是一个MATLAB函数,用于接收来自系统的新数据,并使用它预测新的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 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
现在,您可以将生成的代码用作已部署系统的一部分,以预测剩余的使用寿命。
loadRULModelForCoder
|predictRUL
|saveRULModelForCoder