matlab2017a安装libsvm-3.23 + MinG-w64配置

环境背景

电脑系统:win10系统
Matlab版本:R2017a 64bit
需求:用到SVM作信号的分类处理html

1.下载libsvm-3.23

下载连接:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
在这里插入图片描述
点击zip.file 或者tar.gz 压缩文件下载;
下载到本身matlab安装的路径下的toolbox\matlab
C:\Program Files\MATLAB\R2017a\toolbox\matlab(这为个人路径);
下载完成后记得解压!!
在这里插入图片描述git

2.设置Path

打开matlab,将libsvm-3.23\matlab 添加到路径,好比将:\MATLAB\R2017A\toolbox\matlab\libsvm-3.23 添加到路径。
在这里插入图片描述github

3.进入工做目录

在这里插入图片描述

4.mex -setup

在命令行窗口输入 mex -setup (注意mex后面有一个空格)
正常状况会出现以下界面(点击选择一种语言,通常点第一个):
正常界面
可是若是你的电脑没有编译器或SDK的话会报错(没有报错的忽略此处,直接看第5步):
在这里插入图片描述web

>> mex -setup
错误使用 mex
未找到支持的编译器或 SDK。您能够安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装
MinGW-w64 编译器。有关更多选项,请访问
http://www.mathworks.com/support/compilers/R2017a/。

解决方法
1.按照报错里的网址下载安装MinGW-w64 编译器
或者网址: http://tdm-gcc.tdragon.net/download
2.点击安装,一切按照默认安装便可,若是要改变默认安装路径,记好安装的地方,后边设置要用到
3.给tdm-gcc配置环境变量
(1.)单击个人电脑,右键点击属性
(2.)点击高级系统设置
在这里插入图片描述
(3)点击环境变量→新建→添加变量名和变量值,变量值为tdm-gcc的安装路径→点击肯定→再次点击两个窗口的肯定
在这里插入图片描述
(4)此时回到matlab中再次运行mex -setup
若是还出现一样的错误,设置使用MATLAB将MW_MINGW64设置为临时环境变量:
输入:windows

>> setenv('MW_MINGW64_LOC','D:\setup\TDM-GCC')

后边的引号内的为TDM-GCC的安装路径。
这种方法每次启动MATLAB 正确使用MinGW时,都须要运行这个命令。
再次输入 mex -setup便可!
出现正常界面,选择一种你须要的语言,此步完成~~svg

5.make

接着在命令窗口输入make
正常状况出现下面的界面为编译成功:
在这里插入图片描述
可能会出现以下错误一:
在这里插入图片描述函数

Error: C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\matlab\make.m failed (line 13)
gcc: error: \-fexceptions: No such file or directory

解决方法
!!打开/libsvm3.23/matlab目录下的make.m,将其中所的CFLAGS替换为COMPFLAGS
按住快捷(CTRL+F)可进行全文替换,替换后执行make则能够编译成功。
解决方案参考:https://github.com/cjlin1/libsvm/issues/55 (膜拜大佬)
在这里插入图片描述
这里要作修改的缘由多是咱们选择了C++作编译语言,可能也和是在windows系统上安装的matlab有关。
CFLAGS 表示用于 C 编译器的选项,
CXXFLAGS 表示用于 C++ 编译器的选项。测试

更新:make后还可能出现一下错误二:
在这里插入图片描述
解决方法:关闭Matlab,点击Matlab图标右键以管理员身份运行,而后重复步骤4便可解决。spa

至此,libsvm-3.23编译安装完成!下面进行测试!.net

6.测试

(1)下载测试数据
将工做路径调整到以下以后,能够看到heart_scale,这是libsvm自带的测试数据文件
C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23
在这里插入图片描述
这是一个libsvm格式的数据文件,直接用load会报错:

load('heart_scale')

错误使用 load
ASCII 文件 heart_scale 的第 3 行中的列数必须与前面行中的列数相同。
在这里插入图片描述
解决方法
可以使用libsvmread()函数将其转化为matlab格式。
可是!要注意此时要将工做路径改回
C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\matlab
不然会报错!括号里要写明heart_scale所在的路径!

[heart_scale_label,heart_scale_inst]=libsvmread('C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\heart_scale');

报错为: 未定义函数或变量 ‘libsvmread’
解决方法
须要检查一下当前工做路径和libsvmread()函数里的路径是否正确。
当工做区(workspace)出现以下界面,说明数据下载成功:
数据下载
(2)执行语句

>> [heart_scale_label,heart_scale_inst]=libsvmread('C:\Program Files\MATLAB\R2017a\toolbox\matlab\libsvm-3.23\heart_scale');
>> model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');
>> predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model);

出现以下结果:
在这里插入图片描述
安装成功!测试成功!
撒花★,°:.☆( ̄▽ ̄)/$:.°★

感谢如下分享:
1.http://www.xiaoten.com/libsvm-toolbox-in-the-64-bit-matlab-under-the-installation-instructions.html
2.https://blog.csdn.net/u010970698/article/details/51204432