matlab2017a安裝libsvm-3.23 + MinG-w64配置

環境背景

電腦系統:win10系統
Matlab版本:R2017a 64bit
需求:用到SVM做信號的分類處理

1.下載libsvm-3.23

下載鏈接:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
在這裏插入圖片描述
點擊zip.file 或者tar.gz 壓縮文件下載;
下載到自己matlab安裝的路徑下的toolbox\matlab
C:\Program Files\MATLAB\R2017a\toolbox\matlab(這爲我的路徑);
下載完成後記得解壓!!
在這裏插入圖片描述

2.設置Path

打開matlab,將libsvm-3.23\matlab 添加到路徑,比如將:\MATLAB\R2017A\toolbox\matlab\libsvm-3.23 添加到路徑。
在這裏插入圖片描述

3.進入工作目錄

在這裏插入圖片描述

4.mex -setup

在命令行窗口輸入 mex -setup (注意mex後面有一個空格)
正常情況會出現如下界面(點擊選擇一種語言,一般點第一個):
正常界面但是如果你的電腦沒有編譯器或SDK的話會報錯(沒有報錯的忽略此處,直接看第5步):
在這裏插入圖片描述

>> mex -setup
錯誤使用 mex
未找到支持的編譯器或 SDK。您可以安裝免費提供的 MinGW-w64 C/C++ 編譯器;請參閱安裝
MinGW-w64 編譯器。有關更多選項,請訪問
http://www.mathworks.com/support/compilers/R2017a/。

解決方法
1.按照報錯裏的網址下載安裝MinGW-w64 編譯器
或者網址: http://tdm-gcc.tdragon.net/download
2.點擊安裝,一切按照默認安裝即可,如果要改變默認安裝路徑,記好安裝的地方,後邊設置要用到
3.給tdm-gcc配置環境變量
(1.)單擊我的電腦,右鍵點擊屬性
(2.)點擊高級系統設置
在這裏插入圖片描述
(3)點擊環境變量→新建→添加變量名和變量值,變量值爲tdm-gcc的安裝路徑→點擊確定→再次點擊兩個窗口的確定
在這裏插入圖片描述
(4)此時回到matlab中再次運行mex -setup
如果還出現同樣的錯誤,設置使用MATLAB將MW_MINGW64設置爲臨時環境變量:
輸入:

>> setenv('MW_MINGW64_LOC','D:\setup\TDM-GCC')

後邊的引號內的爲TDM-GCC的安裝路徑。
這種方法每次啓動MATLAB 正確使用MinGW時,都需要運行這個命令。
再次輸入 mex -setup即可!
出現正常界面,選擇一種你需要的語言,此步完成~~

5.make

接着在命令窗口輸入make
正常情況出現下面的界面爲編譯成功:
在這裏插入圖片描述
可能會出現如下錯誤:
在這裏插入圖片描述

Error: C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\matlab\make.m failed (line 13)
gcc: error: \-fexceptions: No such file or directory

解決方法
!!打開/libsvm3.23/matlab目錄下的make.m,將其中所的CFLAGS替換爲COMPFLAGS
按住快捷(CTRL+F)可進行全文替換,替換後執行make則可以編譯成功。
解決方案參考:https://github.com/cjlin1/libsvm/issues/55 (膜拜大佬)
在這裏插入圖片描述
這裏要做修改的原因可能是我們選擇了C++做編譯語言,可能也和是在windows系統上安裝的matlab有關。
CFLAGS 表示用於 C 編譯器的選項,
CXXFLAGS 表示用於 C++ 編譯器的選項。

至此,libsvm-3.23編譯安裝完成!下面進行測試!

6.測試

(1)下載測試數據
將工作路徑調整到如下之後,可以看到heart_scale,這是libsvm自帶的測試數據文件
C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23
在這裏插入圖片描述
這是一個libsvm格式的數據文件,直接用load會報錯:

load('heart_scale')

錯誤使用 load
ASCII 文件 heart_scale 的第 3 行中的列數必須與前面行中的列數相同。
在這裏插入圖片描述
解決方法
可使用libsvmread()函數將其轉化爲matlab格式。
但是!要注意此時要將工作路徑改回
C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\matlab
否則會報錯!括號裏要寫明heart_scale所在的路徑!

[heart_scale_label,heart_scale_inst]=libsvmread('C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\heart_scale');

報錯爲: 未定義函數或變量 ‘libsvmread’
解決方法
需要檢查一下當前工作路徑和libsvmread()函數裏的路徑是否正確。
當工作區(workspace)出現如下界面,說明數據下載成功:
數據下載
(2)執行語句

>> [heart_scale_label,heart_scale_inst]=libsvmread('C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\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.http://www.xiaoten.com/libsvm-toolbox-in-the-64-bit-matlab-under-the-installation-instructions.html
2.https://blog.csdn.net/u010970698/article/details/51204432

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章