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