2013-08-04 112 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,這裏已經完成了。