1

我在 QtCreator 环境中使用 C++ 进行图像分析。为了建立学习模型,我想使用 MATLAB 的 TreeBagger 类,它真的很强大。我可以从 QtCreator 调用 MATLAB,给它一些参数,然后取回分类错误吗?我可以在不使用 mex 文件的情况下执行此操作吗?

4

2 回答 2

2

来自 QProcess 的 Synchronous Process 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 并立即开始向其编写脚本的过程。写完之后;您可以关闭通道,等待响应,然后从 matlab 读取结果。不幸的是,我没有经验提供更直接的例子,但这是大多数情况下的概念。请研究文档以了解其他任何内容。

于 2013-08-04T09:37:48.943 回答
1

Matlab 有一个此处描述的“引擎”接口,可以让独立程序调用 matlab 函数。它的优点是您可以调用engPutVariableengGetVariable以二进制格式传输数据(我认为它可以通过在进程和 matlab 之间使用共享内存来工作,但我不确定),所以您不必转换您的数据到 ascii 并从 ascii 解析结果。

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

于 2013-08-04T10:03:24.473 回答