是否可以从QtCreator调用Matlab

Is it possible to call Matlab from QtCreator?

本文关键字:调用 Matlab QtCreator 是否      更新时间:2023-10-16

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

来自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的过程,无论设置如何,都是可取的,并立即开始为其编写脚本。写入之后;您可以关闭通道,等待响应,然后从matlab中读取结果。不幸的是,我没有提供更直接的例子的经验,但这是大多数情况下的概念。请查阅文档以了解其他信息。

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

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