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(谦恭)

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