主要内容

生成代码预测剩余寿命

这个例子展示了如何使用MATLAB®编码器来部署一个算法预测剩余寿命(原则)。这样的代码生成是非常有用的,当你已经训练一个原则预测模型等linearDegradationModel在预测算法MATLAB和准备部署到另一个环境。这个示例使用MATLAB编码器生成一个墨西哥人从MATLAB文件执行。您可以使用一个类似的过程来生成代码的任何目标,MATLAB编码器支持。金宝app

生成代码的工作流预测原则见下图。第一步是适合一个荷重软化模型使用历史数据从您的系统中描述更新原则预测数据的到来。你必须写一个入口点函数来生成代码。这个函数是一个MATLAB函数,接收到新的数据从您的系统,并使用它来预测一个新的原则。

你可以用这个例子来生成代码的工作流程与degradation-based荷重软化模型预测剩余使用寿命,linearDegradationModelexponentialDegradationModel

符合荷重软化模型

荷重软化预测生成代码之前,您必须符合一个荷重软化模型使用历史数据。对于这个示例,加载数据linTrainTables.mat。这个文件包含一些条件指标的测量随着时间的推移,组织成表和列标签“时间”“条件”。使用这些数据来训练一个线性退化模型。(关于配置的更多信息和培训这种类型的荷重软化模型,明白了linearDegradationModel。)

负载(“linTrainTables.mat”)mdl = linearDegradationModel;fit (mdl linTrainTables,“时间”,“条件”)

准备代码生成模型

一旦你有了一个训练有素的荷重软化模型,保存模型saveRULModelForCoder。这一功能可以节约荷重软化模型垫文件。之后,在入口点函数,使用loadRULModelForCoder加载和重建的荷重软化模型文件。

saveMATfilename =“savedModel.mat”;saveRULModelForCoder (mdl saveMATfilename);

定义入口点函数

入口点函数是你想要的函数来生成代码。当预测原则,你的入口点函数可能需要输入数据,处理它在某种程度上提取条件指标,然后使用predictRUL获得一个新的原则的估计模型。

对于这个示例,创建的入口点函数degradationRULPredict.m,如下所示。

类型degradationRULPredict.m
函数(ci, estRUL pdfRUL] = degradationRULPredict(数据)% # codegen阈值= 60;%负载准备模型mdl = loadRULModelForCoder (“savedModel.mat”);%使用输入数据进行新的预测[estRUL, ci, pdfRUL] = predictRUL (mdl、数据阈值);结束

这个函数作为输入数据点组成的时间和工况指示器值。这个函数使用loadRULModelForCoder加载以前保存的版本的训练模型saveRULModelForCoder。还包括所需的函数% # codegen指令,指示检查代码的代码分析器(MATLAB编码器)帮助您诊断和解决违反可能导致错误在代码生成或在运行时。

的入口点函数的功能和限制

这个示例的简单的入口点函数加载原则和获得新的预测模型。你的入口点函数可以做其他操作,如进一步处理输入数据提取条件用于预测指标。然而,在入口点函数必须支持所有功能和操作代码生成。金宝app

你还可以使用函数更新命令来更新预测模型基于新的数据。这样做,你们可以包含额外的代码保存更新后的模型参数当您关闭并重新启动部署系统。有关更多信息,请参见生成的代码保存荷重软化模型状态对系统重新启动

你的入口点函数通常可以改变属性的荷重软化模型对象不是只读的。然而,下面的属性的值,否则读写,在生成的代码是固定的。试图改变他们在运行时生成一个错误。

  • LifeTimeVariable

  • LifeTimeUnit

  • DataVariables

生成代码

生成的代码,您必须提供示例数据的数据类型和格式所期望的入口点函数。对于这个示例,加载一些测试数据在相同的格式的数据用于训练荷重软化模型,表时间和工况指示器的价值观。因为你的入口点函数接受一次和价值作为其输入,从表中提取一个条目的测试数据。对于代码生成,特定的值并不重要,重要的是数据类型。

负载(“linTestData.mat”,“linTestData1”)testData = linTestData1 (1);testData
testData =1×2表时间条件___ _____ 1 2.1316

开放应用MATLAB编码器和指定入口点函数

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

指定输入数据类型

指定输入数据类型的入口点函数,在定义输入类型页面,使用testData在调用degradationRULPredict。当你进入电话,MATLAB编码器显示检测到的输入类型和数量的输出。点击下一个来确认。

生成代码

可选地,检查的入口点函数在运行时产生问题。为此,单击检查问题。当你准备好了,点击下一个推进到生成代码页面。在这个页面中,您指定的目标代码生成。您可以生成原则预测编码MATLAB编码器支持的任何目标,包括独立的C / c++代码,C / c++代码编译为一个库,或C / c++代码编译为可执行。金宝app对于这个示例,从构建类型列表中,选择墨西哥人。一个墨西哥人的文件是可执行的,您可以调用MATLAB。

点击生成生成墨西哥人文件,degradationRULPredict_mex。关于MATLAB的额外信息编码器功能和它产生的文件,看到的通过使用MATLAB编码器应用生成C代码(MATLAB编码器)

生成代码与codegen命令

作为一种替代方法使用MATLAB编码器应用,您可以生成使用以下代码codegen(MATLAB编码器)命令。

codegendegradationRULPredictarg游戏{testData}-nargout3
代码生成成功。

验证生成的代码

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

[estRUL, ci, pdfRUL] = degradationRULPredict (testData);[estRUL_mex, ci_mex pdfRUL_mex] = degradationRULPredict_mex (testData);

例如,比较获得的估计荷重软化和MATLAB函数和文件生成的墨西哥人。

estRUL
estRUL = 114.2927
estRUL_mex
estRUL_mex = 114.2927

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

另请参阅

||

相关的话题