1. 程式人生 > >Mac OS環境下的libsvm在Matlab中安裝

Mac OS環境下的libsvm在Matlab中安裝

為了讓大家少走彎路,一定要分享一下我的經驗教訓……

好啦~我們開始吧!

所需要的材料:Macbook、Xcode、Matlab2014R、libsvm-3.21optsPatch10.8.patchxcode7_mexopts
libsvm的原始版本使用C++寫的,為了在matlab平臺下使用,需要用C++編譯器編譯,生成類似於.m檔案的.mexmaci64檔案。這就是為什麼我們要用到Xcode的原因了
Step1:首先在你的電腦上裝上Xcode
Step2:觀察下你的Xcode有沒有Command Line Tool,最新版本的應該都是預設安裝了的,沒有的請自行百度安裝啦。就是這個:


Command Line Tool
Step3:下載並安裝補丁optsPatch10.8.patch
預設下載到Downloads資料夾下,不要動!
在Matlab中輸入:

cd(matlabroot)
!unzip -o ~/Downloads/optsPatch10.8.patch
  
  • 1
  • 2

Step4:在Matlab中配置mex
在Matlab中建立一個編譯C++的環境
輸入:

mex -setup
  
  • 1

如果成功了就好了,如果不成功,請這樣做:
Step4.1:xcode7_mexopts.zip,然後解壓
Step4.2:在Matlab下,輸入:

cd
( prefdir ); //看一下當前資料夾下有沒有"mex_"打頭的檔案,如"mex_C_maci64.xml",如果有的話,移除該檔案 cd( fullfile( matlabroot, 'bin', 'maci64', 'mexopts' ) ); mkdir mexoptsContentsOLD movefile *.xml mexoptsContentsOLD/ movefile( '~/Downloads/xcode7_mexopts/*.xml', '.' ); mex -setup
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

原網址:http://cn.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7-0


這樣應該就成功了。
Step5:接下來安裝libsvm
先從libsvm官網上下載最新的libsvm,然後放到Matlab的toolbox資料夾下(Application->Matlab->顯示包內容->找到toolbox->把libsvm放進去)
Step6:進入libsvm的matlab資料夾
在Matlab中輸入:

cd(matlabroot)
cd toolbox/libsvm-3.21/matlab
  
  • 1
  • 2

Step7:執行make
在Matlab中輸入

make
  
  • 1

該步驟就是將C++檔案編譯成matlab下可以執行的檔案
看看資料夾下是不是有.mexmaci64檔案生成啦
Step8:把libsvm加入到Matlab的工作路徑下
這一步不能漏啊,否則出了libsvm-3.21這個資料夾就不能使用這些函數了呀,所以要把這些函式加入工作路徑下,工作路徑就是Matlab每次看到函式時都會去找其實現的地方呀。
在HOME標籤頁上點選Set Path;左側點Add With Subfolders,把libsvm中matlab資料夾加進去,儲存就好了。
set path
到此為止,改裝的都裝好了。
我們來測試一下!
轉到libsvm-3.21資料夾下,會看到一個heart_scale檔案,我們用這個檔案來測試
path
在Matlab中輸入:

[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); 
  
  • 1
  • 2
  • 3

如果結果出現:
Accuracy = 86.6667% (234/270) (classification)
則成功啦!

參考資料:
http://www.jianshu.com/p/e0275a380803
http://apinetree.blog.51cto.com/714152/1560254/
http://cn.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7-0