因为要训练SVM,所以在matlab上要下载最新版的libsvm。按照其他博客的步骤一步一步做了之后,却卡了bug。
下载libsvm步骤:
1.下载libsvmLIBSVM -- A Library for Support Vector Machines (ntu.edu.tw)
选择matlab对应的下载链接
2.将下载好的压缩包解压到matlab下载目录的toolbox
3.以管理员身份运行matlab
4.打开/.../libsvm-3.25/matlab文件夹
5.在命令行中输入make
make编译的时候,一直在报错
make
Error: D:\MATLAB\toolbox\libsvm-3.25\matlab\make.m failed (line 13)
未找到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问 https://www.mathworks.com/support/compilers。
=> Please check README for detailed instructions.
但是我有下载MinGW,而且C/C++可以正常编译。
所以我先试了一些“土方法”:
将make.m文件下的CFLAGS 替换成COMPFLAGS
结果发现我的make.m文件里根本没有CFLAGS和COMPFLAGS
然后我又去研究我的MinGW
1.在cmd中输入gcc -v正确输出说明我的MinGW下载无误。
2.然后我又将MinGW的目录放在我的电脑属性-高级系统设置-高级-环境变量的系统变量中,路径命名为MW_MINGW64_LOC。
3.在matlab命令行中输入setenv('MW_MINGW64_LOC',path),path为MinGW的下载路径。
4.正常运行后再次输入make编译
报了新的错,整一个大无语住。
使用 'MinGW64 Compiler (C)' 编译。
警告: 您使用的是不受支持的 MinGW 编译器版本。要安装支持的 MinGW 编译器版本,请参阅: 安装 MinGW-w64 编译器。
有关当前支持的编译器的列表,请访问 https://www.mathworks.com/support/compilers。
> In make (line 13)
Error: D:\MATLAB\toolbox\libsvm-3.25\matlab\make.m failed (line 13)
D:\MATLAB\toolbox\libsvm-3.25\matlab\libsvmread.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
#include <stdio.h>
查询这个报错,其他博客说是因为版本太低,然后我又看了看,我好像确实是下载成了32位的版本。没办法了,只能重新下载。 卸载之前的MinGW只需要找到安装目录并删除即可。
重新下载MinGW
MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net
官网下载,但是似乎是这个网站出问题了,下载的安装包一直下载失败,所以我们不用下载安装包了,直接下载合适版本的MinGW。
配置环境变量
(1)我的电脑属性-高级系统设置-高级-环境变量的系统变量中:MW_MINGW64_LOC的路径修改为新的MinGW的下载路径
(2)我的电脑属性-高级系统设置-高级-环境变量的系统变量中:path路径中,之前已经有的\...\mingw\bin修改为新的MinGW的下载路径下的bin文件
编译libsvm
再次回到matlab页面
1.打开/.../libsvm-3.25/matlab文件夹
2.在命令行中输入make,发现编译成功(我的虽然一直有警告,但是不影响)。
3.然后将下图中四个编译好的文件复制粘贴到\..\toolbox\libsvm-3.25\windows文件内。
4.matlab中配置路径
在主页-配置路径中添加以下路径:
配置成功!
来自大佬的解救:修改之后函数即可用
svmtrain ——> fitcsvm
svmclassify ——> predict
但是新的MinGW还需要下载新的编译器。。。(碎碎念)