MATLAB報錯:Y must be a vector or a character array.

在matlab中使用支持向量機函數時會出現如下錯誤:

錯誤使用 svmtrain (line 234)
Y must be a vector or a character array.

報錯原因爲:
libsvm針對matlab的路徑未設置

解決辦法1(如果已有libsvm工具):

1.點擊Matlab左上角的file,選擇set path
2.在彈出的選項框中,選擇第二個選項And with Subfolders
3.找到你的libsvm文件夾,點確定
4.點擊save,關閉set path

解決辦法2(沒有libsvm工具):
1、下載libsvm包,鏈接爲:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/

2、使用解決辦法1中的步驟設置路徑

3、編譯
3.1、在matlab命令行中輸入mex -setup -v 查看一下電腦中有什麼編譯器。
3.2、若是能找到c++編譯器,可直接嘗試在命令行窗口輸入make,執行make.m程序進行編譯,完成後出現4個後綴爲.mexw64文件,即爲安裝成功。若出現報錯,見步驟4。
3.3、若沒能找到C++編譯器,見步驟5。

4、3.2編譯報錯解決方法
4.1、Win10系統下使用libsvm,需要將make.m文件下的CFLAGS 替換成COMPFLAGS****。
4.2、在操作了4.1後仍然報錯,錯誤提示爲svm相關文件在對應路徑找不到,把libsvm包裏面的相應文件copy到對應位置即可。

5、3.3中的問題解決方法爲:
5.1、下載tdm-gcc,網址爲:http://tdm-gcc.tdragon.net/download。注意,下載對應自己電腦位數的裝載程序,否則可能在安裝的時候會報錯。
5.2、裝載tdm-gcc,在系統環境變量中添加該程序的安裝路徑
5.3、在matlab命令行中輸入:setenv(‘MW_MINGW64_LOC’,folder),folder爲TDM-GCC的安裝位置,要加單引號。此時mex可以正常使用,不然重啓matlab即可。
5.4、按照操作3.2步操作即可
第5步操作若還有疑問,可參看網站https://blog.csdn.net/github_35807147/article/details/80725642(謙恭)

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