2017-02-05 73 views
0

我想將一段代碼從Matlab轉換爲python。我運行的是Ubuntu 16.04LTS,需要依靠Octave來運行參考代碼(Matlab沒有安裝一個絕對錯誤)。無論如何,從未使用Octave之前,我可能已經錯過了一個步驟,但是我花了一整天在互聯網上搜索後找不到解決方案。Octave:可以編譯mex,但會出錯:「未能安裝.mex文件功能」

部分代碼使用mex文件。我可以用mkoctfile --mex gradientMex.cppmex --mex gradientMex.cpp進行編譯。我沒有輸出,但在我的工作目錄中生成了一個gradientMex.mex文件。但是,當我嘗試使用gradientMex()時,出現錯誤failed to install .mex file function 'gradientMex'。編譯mex文件後需要做些什麼?

如果它沒有任何用處的,我轉換項目是https://github.com/autocyz/DSST,我需要複製一些從這裏依賴的:https://github.com/pdollar/toolbox/tree/1a3c9869033548abb0c7a3c2aa6a7902c36f39c2/channels/privatewrappers.hppsse.hpp

+1

嗯。也許用'mkoctfile --mex -DMATLAB_MEX_FILE gradientMex.cpp'編譯? – Dario

+0

看起來像是有用!我現在正在得到另一個無關的錯誤。將解決這個問題,如果你提交你的評論作爲答案,我可以接受它。 –

回答

2

在這個特殊項目的源代碼,將mex文件加載到matlab/octave中所需的代碼包含在#ifdef MATLAB_MEX_FILE部分,但mkoctfile默認情況下未定義該變量。所以

mkoctfile --mex -DMATLAB_MEX_FILE gradientMex.cpp 

讓你繼續。但是,您正在探索一個地區,matlab和八度之間的兼容性非常小,我期望其他錯誤。 YMMV,但是也許安裝matlab可能會比將項目移植到倍頻程更困難,特別是如果您的matlab許可證包含安裝支持。祝你好運。