2013-08-04 41 views
1

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

+2

您是否研究过打开matlab.exe并通过类似QProcess的方式工作? – dans3itz

+0

@ dans3itz不,你能告诉我更多关于它吗? – WildThing

回答

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瓦特/任何设置,这将是最好,并立即开始编写脚本,以它的进程。写完之后;你可以关闭通道,等待响应,然后从matlab中读取结果。令人遗憾的是,我没有经历过提供更直接的例子,但这是大多数情况下的概念。请研究任何其他文件。

1

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

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