2012-11-06 79 views
2

我想在Octave上使用libsvm(在Windows平臺上)。如果我對自述文件以及互聯網的許多帖子有所瞭解,我不需要編譯或編譯任何東西,只需將mexw32和mexw64文件複製到我的Octave工作目錄。如果我這樣做,什麼都不會發生,錯誤是一樣的,當我想運行我的示例代碼之前:在Octave上使用libsvm(Windows)

error: `libsvmread' undefined near line 7 column 11 

我試圖運行從八度命令提示符太令,但後來我得到了其他錯誤:

warning: unable to find mkoctfile in expected location: `c:\Program Files (x86)\ 
Octave-3.6.2\bin\mkoctfile-3.6.2' 
warning: mkoctfile exited with failure status 

在指定目錄下的mkoctfile-3.6.2.exe ...

我已經嘗試過編輯octaverc文件太...但它沒」幫助。

任何想法如何正確安裝libsvm?

回答

2

根據LIBSVM發行版的matlab子文件夾中的README文件(我查看了3.13),所包含的二進制文件僅適用於Windows上的64位版本的Matlab。這些二進制文件絕對不適用於Windows版本的Octave!要讓LIBSVM與Octave一起工作,我們將不得不構建Octave特定的.mex文件,並將它們放在Octave可以找到它們的地方。

我把這個過程的演練放在了http://flyingpies.wordpress.com/2012/11/20/getting-libsvm-to-work-with-octave-on-windows/。概括地說,步驟是:

  1. 確保已八度的Windows版本的Visual Studio構建(即不Cygwin的MinGW的或一個)我一定可比性的步驟可以與這些其他拍攝版本,我沒有嘗試過。

  2. 獲取Visual Studio 2010或2012的副本。對我來說工作得很好。你只需要命令行C編譯器和鏈接器就可以使用該大型軟件包。 express version of VS is available for free from Microsoft,雖然我沒有嘗試過。

  3. 在命令提示符窗口中,從Visual Studio的Visual C文件夾中運行vcvarsall.bat批處理文件,以便爲您的環境編譯。

  4. 將Octave bin文件夾添加到您的路徑(我的機器上的C:\Program Files (x86)\Octave-3.6.2\bin)。這解決了你遇到的'找不到mkoctfile'的問題。

  5. 編輯Octave的math.h包含文件以引用Visual Studio的math.h的正確位置。我必須將c:\Program Files (x86)\Octave-3.6.2\include\math.h的第74行從c:/Program Files/Microsoft Visual Studio 10.0/VC/include/math.h更改爲c:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include/math.h

  6. 在啓動了vcvarsall和路徑的同一命令提示符窗口中,啓動Octave,導航到LIBSVM發行版的matlab子文件夾,然後運行make命令。這將執行該文件夾中的make.m文件,該文件將生成.mex文件。

  7. 將.mex文件複製到Octave可以找到它們的文件夾中。我把它們放在C:\Program Files (x86)\Octave-3.6.2\lib\octave\3.6.2\site\oct\i686-pc-mingw32

此時,如果啓動Octave,LIBSVM接口命令應該可用。例如,應運行svmtrain命令。