Window上,Matlab安装libsvm,libsvmtrain.mexw64无效,mex-setup 失败

根据个人经验,这个问题注意以下几点即可解决。

1、软件版本问题

首先要认清自己Matlab的版本,这与第二个问题密切相关。

2、编译器问题

在Matlab的命令行中输入,mex -setup

如果正常执行,会跳出编译器选项给你选择。如果没有编译器,则会告诉你没有合适的编译器。

那么,如果没有编译器,就需要下载安装一个。

下载安装前,请到以下网址查看自己的Matlab支持哪些编译器。

https://ww2.mathworks.cn/support/sysreq/previous_releases.html

不同版本的Matlab支持的编译器是不同的,例如

我们可以看到Matlab2014a对于VS只支持到2013。因此我虽然装了VS2017,但也用不上,所以又装了一个VS2013才解决。

3、重新编译文件

将Matlab的文件路径设置为F:\libsvm-3.22\matlab(此处用的是我的盘符),即进入libsvm软件包的matlab文件夹。

安装好编译器后,在命令行输入 mex -setup 。

接着在命令行输入 make

等文件编译好后,你会发现在libsvm软件包的matlab文件下多出了一些文件,主要是

'libsvmread.mex', 'libsvmwrite.mex', 'svmtrain.mex',和'svmpredict.mex'

简单粗暴一点,全部复制。

粘贴到F:\libsvm-3.22\windows,即粘贴到libsvm软件包的windows文件夹中,报重复则替换。

最好将'svmtrain.mex',和'svmpredict.mex'重命名为libsvmtrain.mex和libsvmpredict.mex,避免和Matlab自带的重名。

4、测试

[heart_scale_label,heart_scale_inst] = libsvmread('F:/libsvm-3.22/heart_scale');
model = libsvmtrain(heart_scale_label,heart_scale_inst,'-c 1 -g 0.07');
[predict_label, accuracy,dec_values] = libsvmpredict(heart_scale_label,heart_scale_inst,model);

结果为

*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)

到这,libsvm就能正常使用了。

5、一些小发现

a.其实,libsvm-3.22中已经为我们编译好了文件,但不知为何就是用不了,会出现libsvmtrain.mexw64无效的错误。所以,我们需要重新编译。

b.我起初觉得再装一个VS2013觉得麻烦,就在朋友电脑上编译了下,再把文件拷过来,结果在我电脑上能用。可是换另一台就不能用了,Matlab的版本是一样的,但是Windows的版本不一样,所以应该和系统版本也有关系。

c.所以还是不偷懒了,哪台电脑用,就在哪台电脑上编译。

希望对大家有帮助!

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值