2012-06-17 09:50:56
| 分類:
it| 標籤:
matlab
libsvm|舉報
|字型大小訂閱
注:版本說明matlab r2010a,libsvm 3.12 ,vc++ 6.0
2023年4月12日,本博新增:
整個過程,都是在 libsvm-3.12\matlab目錄下操作的。如果這一點你忽視了,你不可能解決配置中報的bug,即使重新安裝matlab也不行。
本文的配置路徑為 d:\matlab\r2010a\toolbox\libsvm-3.12\matlab,從始至終都是在這個目錄下進行的。
當然,你也可以將編譯好的檔案拷貝到任何地方,只要你當前的工作目錄中有這四個檔案即可。
詳細步驟如下:
我的matlab版本 r2010a,我的libsvm版本3.12
2.解壓至指定目錄
將libsvm解壓至d:\matlab\r2010a\toolbox下,你也可以解壓至你喜歡的地方。
3.設定路徑
4.編譯libsvm
我的編譯器是vc++ 6.0
首先在matlab設定當前目錄為
d:\matlab\r2010a\toolbox\libsvm-3.12\matlab
5.執行編譯
在matlab命令視窗中輸入
mex -setup
顯示please choose your compiler for building external inte***ce (mex) files:
would you like mex to locate installed compilers [y]/n?
輸入yselect a compiler:
[1] lcc-win32 c 2.4.1 in d:\matlab\r2010a\sys\lcc
[2] microsoft visual c++ 2008 sp1 in d:\program files\microsoft visual studio 9.0
[3] microsoft visual c++ 6.0 in d:\program files\microsoft visual studio
[0] none
compiler:
需要你選擇編譯器
我輸入的是3 即選擇vc++ 6.0
please verify your choices:
compiler: microsoft visual c++ 6.0
location: d:\program files\microsoft visual studio
are these correct [y]/n?
再次確認自己的選擇,輸入y
from template: d:\matlab\r2010a\bin\win32\mexopts\msvc60opts.bat
done . . .
編譯器選擇好了之後,用make.m編譯
命令視窗輸入make
可以看到新編譯出4個檔案libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32
在命令視窗中輸入
load heart_scale;
此時需注意,libsvm 3.12中提供的是c++版本的資料集heart_scale,這裡需要載入matlab版本的資料集。
這兩個資料集有什麼不同呢?
c++版本的資料集裡面如果某乙個樣本的某乙個特徵為0,這個特徵可以不寫在資料集中,但是在matlab版本中,必須要寫出來。
否則的話,會報這樣乙個錯誤:
然後讀取資料集
libsvmread('heart_scale');
完成該步驟後發現
workspace中出現了heart_scale_inst 和heart_scale_label,
說明正確。
model=svmtrain(heart_scale_label,heart_scale_inst)
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
/
本博2023年4月18日新增
部分博友反應
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
命令會報bug,這是libsvm新的版本對於輸出結果的重新設定。
改為如下命令即可。(老版本不用改變。本文是libsvm-3.12。)
model=svmtrain(heart_scale_label,heart_scale_inst)
[
predicted_label, accuracy, decision_values
]=svmpredict(heart_scale_label,heart_scale_inst,model)
/證明libsvm安裝成功,可以進行其他的實驗了。
libsvm在matlab中遇到的問題總結
包含libsvm四個exe程式包,我們所用的庫就是它們,然後在matlab命令框輸入 1.mex setup 2.選擇vc 3.之後輸入make 問題一 error d libsvm libsvm 3.21 matlab make.m failed line 13 未找到 e 百葉通 matlab ...
遇到的問題
1 若class cnmdevctrlprotocol virtual public cnetcomm則starttimer編譯通不過 2 activex在ie下載入多個,相當於多執行緒,所以這時候的activex不要使用全域性變數,當時如果編寫動態庫也不要使用全域性變數 3 btn灰顯或sleep...
遇到的問題
這個文章用於記錄在學習和使用c 的時候遇到的一些問題,以及解決方法,記載了一些非常零散的知識點,沒有主題。在c 11中,有一種新的方法在用new運算子申請結構體內存的同時對其初始化。其格式為 struct car car p new car 但是如果結構體中包含了字元陣列 字串 就不能使用這種格式,...