首页 文章

在Simulink中加载分类模型

提问于
浏览
0

我使用Matlab的Classification Learner App训练了一个分类模型(Classification Tree) . 我已将其导出到工作区,并将其另存为.mat文件 .

我需要将它嵌入Simulink模型中,以便在模拟过程中的每个时间步进行预测 . 我尝试使用Matlab功能块并使用“load”从.mat文件加载分类树,然后使用mdl.predictFcn(myInputData)对新数据进行预测 . 但是,当我尝试运行simulink模型时,我收到错误:

使用函数'load'找到不受支持的变量类 . 不支持在'mdl.ClassifierTTC.predictFcn'中找到的MATLAB类'function_handle' .

这是否意味着我不能在Simulink中使用我的分类模型?有人试过这样做吗?

提前致谢 .

1 回答

  • 0

    有一个解决这个问题的方法,无需编写任何C代码 . 可以使用MATLAB的代码生成器生成所有必需的C代码 .

    生成分类模型后,将其从Classification Learner App导出到工作区,然后使用saveCompactModel()函数保存它 . 请注意,即使在最新的MATLAB版本(2017a)中也不支持某些分类器模型 .

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

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

    这将生成一个S Function块,其中分类器和嵌入在块中的预测函数 . legacy_code()函数为此S函数生成tlc,并允许编译S功能块 .

相关问题