【问题标题】:Translating linear SVM classification algorithm to C using MATLAB Coder使用 MATLAB Coder 将线性 SVM 分类算法转换为 C
【发布时间】:2016-07-25 20:48:35
【问题描述】:

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

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

使用函数“加载”发现不支持的变量类。 MATLAB 类 'ClassificationSVM' 发现于 'classifier.trainedClassifier.ClassificationSVM' 不受支持。

使用命令“whos -file classifierOptimal.mat”查看 MAT 文件中的变量。

在 MATLAB Coder 中似乎不支持用于分类的 MATLAB 类。

如何翻译此分类算法以在 MATLAB 之外使用?

【问题讨论】:

    标签: algorithm matlab classification svm matlab-coder


    【解决方案1】:

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

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

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

    在掌握编译器的工作原理时,我会小心地避免动态(即在运行时加载语言结构)。从 MAT 文件中加载实例会遇到麻烦。

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

    【讨论】:

    • 加载 .mat 文件似乎有效;问题是 .mat 文件中定义的类型不受 Coder 支持。您对不依赖使用 .mat 文件的方法有什么建议吗?
    • 很难说不知道哪里来的:classifierOptimal.mat 是从哪里来的,是谁创建的,谁写的 predictFcn,能不能改成标准的 Matlab 函数或者 mex 文件?
    • .mat 文件是使用 Classification Learner 应用生成的。
    【解决方案2】:

    不幸的是,似乎不支持 SVM 例程的代码生成:

    MATLAB Answers

    MATLAB Documentation

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2019-01-30
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多