在 macOS 上的 Matlab 安装 libsvm

最近需要利用 svm 来处理一些东西。用到了台湾大学林智仁(Lin Chih-Jen)教授团队开发设计 libsvm 软件包。在把 libsvm 安装到 Matlab 上的时候浪费了差不多一个小时。而且绝大多数网上给的教程在我这里都没有什么卵用,所以就把这个安装步骤记录下来。

环境

  • 操作系统:macOS sierra 10.12.2
  • Matlab 版本:R2015b
  • Xcode 版本:8.2.1 (8C1002)

步骤

1. Command Line Tool

如果你没有安装 Xcode,那么你最好还是安装一个,在 App Store 上搜索安装就行。(mac 上竟然不装 Xcode?那你要 mac 何用?),如果你很久没有更新 Xcode 了,建议你先更新一下,因为早期的 Xcode 没有包含 Command Line Tool。总之你打开 Xcode 新建一个项目的时候,能看见下图中红色框中的 Command Line Tool 的图标就行了。

在 macOS 上的 Matlab 安装 libsvm_第1张图片
Command Line Tool

据网上的一些文章说,如果你没有安装 Xcode,可以使用 xcode-select --install 这个命令来安装,但我没试过。

2. mex -setup

打开 Matlab,在命令行输入mex -setup,此时会报错。如果没报错的话,你就可以跳过这一步。

在 macOS 上的 Matlab 安装 libsvm_第2张图片
mex 命令出错信息

这个错误说没有找到支持的编译器和 sdk,于是我们的解决方法就是让 Matlab 找到这些东西。
打开文件夹 /Applications/MATLAB_R2015b.app/bin/maci64/mexopts ,找到下面这两个文件:

  • clang++_maci64.xml
  • clang_maci64.xml

command + f 寻找字符串 MacOSX10.10.sdkMacOSX10.11.sdk,找到后把他们都改成 MacOSX10.12.sdk。每一个文件需要更改 4 处。
OK,改好后再在 Matlab 的命令行输入mex -setup,如果出现类似于下面的信息,就说明可以了。如果还报错,请参考 这篇文章 给 Matlab 打一个补丁。一般来说是不需要这个补丁的,反正我是没有打。

mex 命令成功执行信息

3. 编译 libsvm

在 github 上把 libsvm 下载下来,进入 matlab 文件夹,打开 Makefile 文件,把 MATLABDIR 的值改成你自己的 MATLAB 的安装位置,例如我的就改成:MATLABDIR ?= /Applications/MATLAB_R2015b.app
注意到这个 Makefile 文件里面第 4 和 第 5 行有一个注释。说什么 for Mac MATLABDIR ?= /opt/local/matlab,不要理会它。

在 macOS 上的 Matlab 安装 libsvm_第3张图片
Makefile 文件

好了,把 MATLABDIR 更改好之后,打开命令行,输入 make 命令。然后 balabala 输出一堆 warning,但没有 error。编译完成后生成了几个以 .mexmaci64 为后缀的文件,在 Matlab 的 set path 中把 这些 .mexmaci64 文件添加到路径中就ok了。

4. 测试

在Matlab的命令行里输入 libsvmread ,会出现Usage: [label_vector, instance_matrix] = libsvmread('filename'); 的提示,此时说明已经能够在 Matlab 里面使用 libsvm 了。

在 macOS 上的 Matlab 安装 libsvm_第4张图片
执行 libsvmread 命令

你可能感兴趣的:(在 macOS 上的 Matlab 安装 libsvm)