可以从QtCreator调用Matlab吗?

时间:2013-08-04 09:08:30

标签: c++ matlab qt-creator mex

我在QtCreator环境中使用C ++进行图像分析。为了构建学习模型,我想使用MATLAB中的TreeBagger类,它非常强大。我可以从QtCreator调用MATLAB,给它一些参数,并找回分类错误吗?我可以不使用mex文件吗?

2 个答案:

答案 0 :(得分:2)

来自QProcess的同步过程API示例:

 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();

来自这个例子的概念是能够执行matlab w /任何更好的设置并立即开始编写脚本的过程。写完之后;你可以关闭频道,等待响应,然后从matlab读取结果。不幸的是,我没有经验来提供更直接的例子,但这是大多数情况下的概念。请研究文档以获取其他任何内容。

答案 1 :(得分:1)

Matlab有一个描述here的“引擎”界面,让独立程序调用matlab函数。它的优势在于您可以调用engPutVariableengGetVariable以二进制格式传输数据(我认为它可以通过在您的进程和matlab之间使用共享内存来实现,但我不确定) ,因此您不必将数据转换为ascii并从ascii解析结果。

对于c ++,您可能想为RAII编写一个包装类,或者查看http://www.codeproject.com/Articles/4216/MATLAB-Engine-API,这已经完成了。