Paul Van Wieren
Paul Van Wieren

Reputation: 985

Translating linear SVM classification algorithm to C using MATLAB Coder

I've trained a linear SVM classifier using the Classification Learner app, and exported the model to a .mat file. I'm attempting to translate this algorithm to C using MATLAB Coder, but am getting an error.

I'm not sure if I'm approaching the problem correctly, but my current approach is to load the .mat file as I would do in MATLAB, and then call the classification prediction function using values that are passed in (this assumes that using load() would normally work in MATLAB Coder, of which I'm not sure). When running the "Check for issues" step in MATLAB Coder, the following error is triggered:

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.

It would appear that the MATLAB class used for classification is unsupported in MATLAB Coder.

How do I translate this classification algorithm for use outside of MATLAB?

enter image description here

Upvotes: 0

Views: 341

Answers (2)

Paul Van Wieren
Paul Van Wieren

Reputation: 985

Unfortunately, it appears that code generation for SVM routines is not supported:

MATLAB Answers

MATLAB Documentation

Upvotes: 0

carlosdc
carlosdc

Reputation: 12132

There are two things here. It seems to me that you're trying to generate an executable with:

  • Loading an external mat file
  • External library that needs to be compiled in to your executable

I would read this article about finding mat files for the first issue: http://blogs.mathworks.com/loren/2008/08/11/path-management-in-deployed-applications/

I would carefully try to avoid dynamic (i.e. loaded at run time language constructs) while I grasp how the compiler works. Loading an instance from a MAT file asking for trouble.

You're trying to do too many things at the same time, simplify your approach and see what happens.

Upvotes: 0

Related Questions