首页 > 学院 > 开发设计 > 正文

Matlab错误:Y must be a vector or a character array

2019-11-06 08:41:19
字体:
来源:转载
供稿:网友

原因:应该调用libsvm/matlab中的svmtrain,但是在matlab自带的工具箱中也有svmtrain这个函数,matlab会跑去调用它自带的函数。


解决办法: 1、在setpath中可以把libsvm/matlab和libsvm/windows添加进来,或者置顶 2、把matlab自带工具箱中的svmtrain改一个名字,svmtrain所在位置:your_matlab_ location/Matlab/toolbox/stats/stats 3、我遇到过这个问题两次,第一次用上述的第二种方法解决了,结果过几天又不行了,于是我在一篇关于libsvm配置的文章中看到可以去改libsvm中svmtrain的名字,于是有了如下方法: 修改libsvm/matlab中有关svmtrain的名字,如libsvmtrian,然后修改libsvm/windows中有关svmtrain的名字,和前一个一致就行。注意两个子文件夹中的名字都要改。


测试svmtrain能否使用: 在命令窗中输入以下命令:

>> [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');>> model = libsvmtrain(heart_scale_weight, heart_scale_label, heart_scale_inst, '-c 1');>> [PRedict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);

如果配置成功的话,会显示一下内容:

*optimization finished, #iter = 166obj = -107.553365, rho = 0.449867nSV = 131, nBSV = 103Total nSV = 131Accuracy = 86.2963% (233/270) (classification)

附: 我在运行matlab >> [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');时,报错说找不到heart_scale,这是因为heart_scale在上一级目录中,复制到当前目录就行了,很奇怪,不知道为啥别人都可以。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表