在Simulink中加载分类模型

我使用Matlab的分类学习器应用程序训练了一个分类模型(分类树)。我已经将其导出到工作区,并保存为.mat文件。

我需要将其嵌入到Simulink模型中,以便在模拟过程中每个时间步骤进行预测。我尝试使用Matlab函数块,并使用“load”来从.mat文件中加载分类树,然后使用mdl.predictFcn(myInputData)对新数据进行预测。然而,当我尝试运行Simulink模型时,我得到了以下错误:

在使用函数’load’时发现不支持的变量类。MATLAB类’function_handle’在’mdl.ClassifierTTC.predictFcn’处被发现是不支持的。

这是否意味着我不能在Simulink中使用我的分类模型?有没有人已经尝试过类似的事情?

谢谢大家。


回答:

这个问题有一个解决方案,不需要编写任何C代码。所有必要的C代码都可以通过MATLAB的代码生成器生成。

生成分类模型后,将其从分类学习器应用程序导出到工作区,然后使用saveCompactModel()函数保存。请注意,即使在最新的MATLAB版本(2017a)中,某些分类器模型也是不受支持的。

编写一个m文件,加载并将未见过的数据传递给分类器,并使用predict()函数从分类器中获取分类标签。使用带有dll配置的codegen()从m文件生成C代码,但不要让它编译。这将生成所有必要的头文件和源文件。

现在,使用legacy_code()生成一个S函数,将C代码导入Simulink。将所有生成的头文件和源文件链接到S函数,并使用legacy_code()生成S函数块和tlc文件。

这将生成一个包含分类器和预测功能的S函数块。legacy_code()函数为此S函数生成一个tlc,并允许S函数块被编译。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注