matlab错误解决:Y must be a vector or a character array

时间:2024-05-19 16:37:46

我是在安装SVM的工具箱时遇到的这个错误,因为libsvm的路径未设置正确。而且在MATLAB中也有一样的支持向量机的函数包。所以这里的代码会自动认为是用MATLAB的.m文件。

  1. 首先,你要下载好SVM的文件夹。

下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

当前版本时libsvm-3.20, 压缩包中包含了matlab,python 和java等版本的接口。本文主要利用了matlab的版本。

下载好之后,第二个问题来了,里面的文件都是C,C++的脚本。所以MATLAB编译不了。这时候你就需要给MATLAB添加一个编译器。

  2.下载编译器,及安装

下载地址:http://tdm-gcc.tdragon.net/download  我是跳了最新的下载。随便挑一个就行。

下载之后安装,注意:要安装到c盘根目录下,这个安装比较耗时间,会等比较久。

安装在C盘之后,设置好环境变量

 3.设置环境变量

首先右键“此电脑”,在“更多”里面选择“属性” 
 
然后在打开的系统面板里选择高级系统设置 

matlab错误解决:Y must be a vector or a character array

在打开的选项卡里面选择环境变量 
matlab错误解决:Y must be a vector or a character array

接着在系统变量里面点击新建,变量名为MW_MINGW64_LOC,变量值为C:\TDM-GCC-64(此处路径针对安装的路径) 
matlab错误解决:Y must be a vector or a character array

然后一路点击确定,之后重启你的matlab。

4.最后一步:编译

解压上述的压缩包,并将matlab的当前目录切换到文件家中的matlab文件夹下。

首先配置编译器,在matlab命令窗口中输入

mex –setup

接着运行

make

这里一定要将matlab的工作目录切换到libsvm-3.20/matlab/ 下,这地方make运行了make.m并且生成相应版本的libsvm文件。

libsvmread.mexa64 svmtrain.mexa64 svmpredict.mexa64 libsvmwrite.mexa64

 

如果上述运行成功,说明libsvm成功编译,这里为了方便使用需要设置一下搜索路径。很多人会在编译后直接设置路径,这里个人先确保了libsvm能够使用后又设置的libsvm的工具路径。找到主页上的设置路径。

matlab错误解决:Y must be a vector or a character array

matlab错误解决:Y must be a vector or a character array

把libsvm放在这个路径之上就可以了。