WildThing
WildThing

Reputation: 675

Is it possible to call Matlab from QtCreator?

I am doing image analysis using C++ in the QtCreator environment. In order to build a learning model, I want to use the TreeBagger class from MATLAB, which is really powerful. Can I call MATLAB from QtCreator, give it some parameters, and get back the classification error? Can I do this without using mex files?

Upvotes: 1

Views: 1065

Answers (2)

mars
mars

Reputation: 804

Matlab has an "engine" interface described here to let standalone programs call matlab functions. It has the advantage that you can call engPutVariableand engGetVariable to transfer your data in binary format (I think it works by using shared memory between your process and matlab, but I'm not sure on this), so you don't have to convert your data to ascii and parse the result from ascii.

For c++ you might want to write a wrapper class for RAII or have a look at http://www.codeproject.com/Articles/4216/MATLAB-Engine-API, where this has already been done.

Upvotes: 1

dans3itz
dans3itz

Reputation: 1615

From QProcess's Synchronous Process API example:

 QProcess gzip;
 gzip.start("gzip", QStringList() << "-c");
 if (!gzip.waitForStarted())
     return false;

 gzip.write("Qt rocks!");
 gzip.closeWriteChannel();

 if (!gzip.waitForFinished())
     return false;

 QByteArray result = gzip.readAll();

The concept to from this example is the process of being able to execute matlab w/ whatever settings that would be preferable and begin writing a script to it immediately. After the write; you can close the channel, wait for response, then read the results from matlab. Uunfortunately, I'm not experienced w/ it to provide a more direct example, but this is the concept for the most case. Please research the documentation for anything else.

Upvotes: 2

Related Questions