使用 MATLAB Coder 将线性 SVM 分类算法转换为 C

Translating linear SVM classification algorithm to C using MATLAB Coder

我已经使用 Classification Learner 应用程序训练了线性 SVM classifier,并将模型导出到 .mat 文件。我正在尝试使用 MATLAB Coder 将此算法转换为 C,但出现错误。

我不确定我是否正确地解决了问题,但我目前的方法是像在 MATLAB 中那样加载 .mat 文件,然后调用 classification 预测函数使用传入的值(假设使用 load() 通常可以在 MATLAB Coder 中工作,对此我不确定)。当运行 MATLAB Coder 中的"Check for issues" 步骤时,会触发以下错误:

Found unsupported class for variable using function 'load'. MATLAB class 'ClassificationSVM' found at 'classifier.trainedClassifier.ClassificationSVM' is unsupported.

Use the command 'whos -file classifierOptimal.mat' to view the variables in the MAT file.

用于class化的 MATLAB class 似乎在 MATLAB Coder 中不受支持。

如何翻译此class化算法以在 MATLAB 之外使用?

这里有两件事。在我看来,您正在尝试生成一个可执行文件:

  • 正在加载外部 mat 文件
  • 需要编译到可执行文件中的外部库

我会在第一期阅读这篇关于查找 mat 文件的文章:http://blogs.mathworks.com/loren/2008/08/11/path-management-in-deployed-applications/

我会小心地尝试避免动态(即在 运行 时间语言构造时加载),同时我掌握编译器的工作原理。从 MAT 文件加载实例自找麻烦。

您尝试同时做太多事情,简化您的方法,看看会发生什么。

很遗憾,似乎不支持 SVM 例程的代码生成:

MATLAB Answers

MATLAB Documentation